     if map_size(map1) <= map_size(map2) do
       map1
       |> Map.keys
-      |> do_subset?(map2)
+      |> map_subset?(map2)
     else
       false
     end
   end
 
-  defp do_subset?([], _), do: true
-  defp do_subset?([key | rest], map2) do
+  defp map_subset?([], _), do: true
+  defp map_subset?([key | rest], map2) do
     if Map.has_key?(map2, key) do
-      do_subset?(rest, map2)
+      map_subset?(rest, map2)
     else
       false
     end

  # If the second set is less than half the size of the first set, it's fastest
  # to simply iterate through each item in the second set, deleting them from
  # the first set.
  def difference(%MapSet{map: map1}, %MapSet{map: map2}) do
    %MapSet{map: Map.drop(map1, Map.keys(map2))}
  end

  defp filter_not_in(keys, map2, acc \\ [])


  """
  @spec intersection(t(val), t(val)) :: t(val) when val: value
  def intersection(%MapSet{map: map1} = map_set, %MapSet{map: map2}) do
    {map1, map2} = order_by_size(map1, map2)
    %{map_set | map: Map.take(map2, Map.keys(map1))}
  end

  @doc """
