   defp valid_meta?(_),
     do: false
 
+  @docp """
+  Validates domain name.
+  """
   for x <- @hex_chars, y <- @hex_chars do
     defp valid_domain?("#{unquote(x)}#{unquote(y)}"),
       do: true

  defp merge(uuid, "", acc),
    do: acc <> uuid

  for x <- @hex_chars do
    defp valid_meta?("#{unquote(x)}"),
      do: true

    end
  end

  @doc """
  Merges a header into a new UUID, this won't validate the header so always use a header
  generated with `header/2`.
  """
  def merge_header(head),
    do: if head, do: merge(UUID.uuid4(), head), else: nil

  @doc """
  Parses the header, never use this to on game logic, this is only for debug code or IEX usage.
  """
  def parse(header) do
    <<domain::bytes-size(2), meta1::bytes-size(1), meta2::bytes-size(1), rest::binary>> = header
    %{domain: domain, meta1: meta1, meta2: meta2, uuid: rest}
  end

  @docp """
  Merges two strings together.
  """
  defp merge(uuid, prepend),
    do: merge(uuid, prepend, "")
  defp merge("-" <> uuid, prepend, acc),
