   def __keyword__(tag, fields, record) do
     if is_record(record, tag) do
       [_tag | values] = Tuple.to_list(record)
+
       case join_keyword(fields, values, []) do
         kv when is_list(kv) ->
           kv
+
         expected_fields ->
-          msg = "expected argument to be a #{inspect tag} record with #{expected_fields} fields, got: #{inspect record}"
+          msg =
+            "expected argument to be a #{inspect(tag)} record with #{expected_fields} fields, got: " <>
+              inspect(record)
+
           raise ArgumentError, msg
       end
     else
-      msg = "expected argument to be a literal atom, literal keyword or a #{inspect tag} record, got runtime: #{inspect record}"
+      msg =
+        "expected argument to be a literal atom, literal keyword or a #{inspect(tag)} record, got runtime: " <>
+          inspect(record)
+
       raise ArgumentError, msg
     end
   end

    case remaining do
      [] ->
        {:{}, [], [tag | match]}
      _  ->
        keys = for {key, _} <- remaining, do: key
        raise ArgumentError, "record #{inspect tag} does not have the key: #{inspect hd(keys)}"
    end
  end


    keyword = apply_underscore(fields, keyword)

    {match, remaining} =
      Enum.map_reduce(fields, keyword, fn {field, default}, each_keyword ->
        new_fields =
          case Keyword.fetch(each_keyword, field) do
            {:ok, value} -> value
