 
   """
   @spec unzip(t) :: {list(element), list(element)}
-  def unzip(coll) do
-    {list1, list2} = reduce(coll, {[], []}, fn({el1, el2}, {list1, list2}) ->
+  def unzip(collection) do
+    {list1, list2} = reduce(collection, {[], []}, fn({el1, el2}, {list1, list2}) ->
       {[el1|list1], [el2|list2]}
     end)
 

  end

  @doc """
  Shortcut to `chunk(coll, n, n)`.
  """
  @spec chunk(t, non_neg_integer) :: [list]
  def chunk(coll, n), do: chunk(coll, n, n, nil)

  @doc """
  Returns a collection of lists containing `n` items each, where


  """
  @spec reverse_slice(t, non_neg_integer, non_neg_integer) :: list
  def reverse_slice(collection, start, count) when start >= 0 and count >= 0 do
    list = reverse(collection)
    length = length(list)
    count = Kernel.min(count, length - start)

