             |> Stream.map(&normalise_year/1)
             |> Enum.dedup
     case years do
-      [ year ] ->
+      [year] ->
         year
       [] ->
         :nil

  """
  @spec normalise_day(String.t | integer) :: 1..31 | :nil
  def normalise_day(day)
  def normalise_day(""), do: :nil
  def normalise_day(day) when is_binary(day) do
    normalise_day String.to_integer day
  end
  def normalise_day(day) when day > 0 and day < 32, do: day
  def normalise_day(_), do: :nil 


  @doc """

    """
    @spec is_valid?(DateTuple.t) :: boolean
    def is_valid?(date_tuple)

    def is_valid?(%DateTuple{month: month}) when is_nil(month),
      do: false

    def is_valid?(%DateTuple{year: year}) when is_nil(year),
      do: false

    def is_valid?(date_tuple=%DateTuple{day: day}) when is_nil(day) do
      is_valid? Map.put(date_tuple, :day, 1)
    end

    def is_valid?(%DateTuple{year: year, month: month, day: day}) do
      case Date.new(year, month, day) do
        {:ok, _} ->
