diff --git a/commands/request.go b/commands/request.go
index 824d48d71e73fbd100707cd1654f13a9b00de3b2..7373a1a243acffd86e224e0d1726a35513dd847d 100644
--- a/commands/request.go
+++ b/commands/request.go
@@ -10,6 +10,14 @@ func (r *Request) Option(name string) interface{} {
   return r.options[name]
 }
 
+func (r *Request) SetOption(option Option, value interface{}) {
+  // saves the option value in the map, indexed by each name
+  // (so commands can retrieve it using any of the names)
+  for _, name := range option.Names {
+    r.options[name] = value
+  }
+}
+
 func (r *Request) Arguments() []string {
   return r.arguments
 }