extract_attributes!(map) :: map
validate_attributes(map, Keyword.t) :: {:ok, :valid} | {:error, [String.t]}