   defp compile_config(opts) do
     aliases = opts[:aliases] || []
 
-    {switches, strict} = cond do
+    {switches, strict?} = cond do
       opts[:switches] && opts[:strict] ->
         raise ArgumentError, ":switches and :strict cannot be given together"
       s = opts[:switches] ->

    end
  end

  defp normalize_value(value, kinds, t, _) do
    {value, kinds, t}
  end


      String.length(option) > 1 ->
        if (opt = get_option(option)) && (alias = aliases[opt]) do
          IO.warn "multi-letter aliases are deprecated, got: #{inspect(opt)}"
          do_next({:default, alias}, value, original_option, rest, switches, strict?)
        else
          next(expand_multiletter_alias(option, value) ++ rest, aliases, switches, strict?)
        end
      true ->
        # We have a regular one-letter alias here
        tagged = tag_single_letter_alias(option, aliases)
        do_next(tagged, value, original_option, rest, switches, strict?)
    end
  end

  defp next(argv, _aliases, _switches, _strict?) do
    {:error, argv}
  end

  defp do_next(tagged, value, original, rest, switches, strict?) do
    if strict? and not option_defined?(tagged, switches) do
      {:undefined, original, value, rest}
    else
      {option, kinds, value} = normalize_option(tagged, value, switches)
      {value, kinds, rest} = normalize_value(value, kinds, rest, strict?)
      case validate_option(value, kinds) do
        {:ok, new_value} -> {:ok, option, new_value, rest}
        :invalid         -> {:invalid, original, value, rest}
