               # Get the translation function if one is defined
               translation        = Keyword.get(translations, key)
               # Break the setting key name into [app, and setting]
-              [app, app_setting] = Keyword.get(info, :to, key |> atom_to_binary) |> String.split(".", parts: 2)
+              [app, app_setting] = Keyword.get(info, :to, key |> Atom.to_string) |> String.split(".", parts: 2)
               # Get the default value for this mapping, if defined
               default_value      = Keyword.get(info, :default, nil)
               # Get the datatype for this mapping, falling back to binary if not defined

    end
  end
  defp parse_datatype(_datatype, _value, _setting), do: nil
end
  # End result: [{:app, [{:key1, val1}, {:key2, val2}, ...]}]
  defp settings_to_config(settings) do
    for {app, settings} <- settings, into: [] do
      { app |> String.to_atom, (for {k, v} <- settings, into: [], do: {k |> String.to_atom, v}) }
    end
  end

  # Parse the provided value as a value of the given datatype
  defp parse_datatype(:atom, value, _setting),     do: value |> List.to_string |> String.to_atom
  defp parse_datatype(:binary, value, _setting),   do: value |> List.to_string
  defp parse_datatype(:charlist, value, _setting), do: value
  defp parse_datatype(:boolean, value, setting) do
    try do
      case value |> List.to_string |> String.to_existing_atom do
        true  -> true
        false -> false
        _     -> raise TranslateError, messagae: "Invalid boolean value for #{setting}."
