       #=> { [source: "lib"], ["test/enum_test.exs"] }
 
   """
-  def parse([<<?-, option|:binary>>, h|t], aliases // [], dict // [], args // []) do
+  def parse(options, aliases // []) when is_list(options) and is_list(aliases) do
+    parse(options, aliases, [], [])
+  end
+
+  ## Helpers
+
+  defp parse([<<?-, option|:binary>>, h|t], aliases, dict, args) do
     option = normalize_option(option, aliases)
 
     case h do

    option = binary_to_atom(option)
    aliases[option] || option
  end
end

    end
  end

  defp parse([<<?-, option|:binary>>], aliases, dict, args) do
    option = normalize_option(option, aliases)
    dict = Keyword.put dict, option, true
    { dict, args }
  end

  defp parse(value, _, dict, args) do
    { dict, List.concat(args, value) }
  end

  defp key_value(key, boolean, dict) when boolean in ["false", "true"] do
    Keyword.put dict, key, binary_to_atom(boolean)
  end

