diff --git a/commands/cli/parse.go b/commands/cli/parse.go
index bd37419155e6ff70f6235ff2a409a0672a529574..ba57880cb9794c0be1a7bfc2af546a5db32a4456 100644
--- a/commands/cli/parse.go
+++ b/commands/cli/parse.go
@@ -13,7 +13,12 @@ func Parse(input []string, root *commands.Command) ([]string, []string, map[stri
     return nil, nil, nil, err
   }
 
-  opts, args, err := parseOptions(input, path, root)
+  options, err := root.GetOptions(path)
+  if err != nil {
+    return nil, nil, nil, err
+  }
+
+  opts, args, err := parseOptions(input, options)
   if err != nil {
     return nil, nil, nil, err
   }
@@ -44,12 +49,7 @@ func parsePath(input []string, root *commands.Command) ([]string, []string, erro
 
 // parseOptions parses the raw string values of the given options
 // returns the parsed options as strings, along with the CLI args
-func parseOptions(input, path []string, root *commands.Command) (map[string]string, []string, error) {
-  options, err := root.GetOptions(path)
-  if err != nil {
-    return nil, nil, err
-  }
-
+func parseOptions(input []string, options map[string]commands.Option) (map[string]string, []string, error) {
   opts := make(map[string]string)
   args := make([]string, 0)
 
diff --git a/commands/cli/parse_test.go b/commands/cli/parse_test.go
index 247ca3d1e62d6de0c3a4fbcbeb6a992d5bb431b5..f9f7f7072167792269c06b60f3d76560c6e425c6 100644
--- a/commands/cli/parse_test.go
+++ b/commands/cli/parse_test.go
@@ -15,8 +15,13 @@ func TestOptionParsing(t *testing.T) {
   }
   cmd.Register("test", &commands.Command{})
 
-  opts, input, err := parseOptions([]string{ "--beep", "--boop=5 lol", "test2", "-cVb", "beep" },
-    []string{"test"}, cmd)
+  path := []string{"test"}
+  options, err := cmd.GetOptions(path)
+  if err != nil {
+    t.Error(err)
+  }
+
+  opts, input, err := parseOptions([]string{ "--beep", "--boop=5 lol", "test2", "-cVb", "beep" }, options)
   /*for k, v := range opts {
     fmt.Printf("%s: %s\n", k, v)
   }