 
   defp map_subset?([], _), do: true
   defp map_subset?([key | rest], map2) do
-    if Map.has_key?(map2, key) do
-      map_subset?(rest, map2)
-    else
-      false
-    end
+    match?(%{^key => _}, map2) and map_subset?(rest, map2)
   end
 
   @doc """

    %{map_set | map: Map.drop(map1, Map.keys(map2))}
  end

  defp filter_not_in(keys, map2, acc \\ [])
  defp filter_not_in([], _map2, acc), do: :maps.from_list(acc)
  defp filter_not_in([key | rest], map2, acc) do
    acc =
      if Map.has_key?(map2, key) do
        acc
      else
        [{key, []} | acc]
      end
    filter_not_in(rest, map2, acc)
  end

  @doc """

    true
  end
  defp none_in?([key | rest], map2) do
    case map2 do
      %{^key => _} -> false
      _ -> none_in?(rest, map2)
    end
  end

