   @spec drop(t, integer) :: list
   def drop(enumerable, amount)
       when is_list(enumerable) and is_integer(amount) and amount >= 0 do
-    do_drop(enumerable, amount)
+    drop_list(enumerable, amount)
   end
 
   def drop(enumerable, amount) when is_integer(amount) and amount >= 0 do

  end

  def drop(enumerable, amount) when is_integer(amount) and amount < 0 do
    do_drop(reverse(enumerable), -amount) |> :lists.reverse
  end

  @doc """


  ## drop

  defp drop_list([_ | t], counter) when counter > 0 do
    drop_list(t, counter - 1)
  end

  defp drop_list(list, 0) do
    list
  end

  defp drop_list([], _) do
    []
  end

