   end
 
   defp bucket_intersect([m1 | _] = bucket1, [m2 | bucket2]) when m1 > m2 do
-    { new, count } = bucket_intersect(bucket1, bucket2)
-    { new, count }
+    bucket_intersect(bucket1, bucket2)
   end
 
   defp bucket_intersect([_ | bucket1], bucket2) do
-    { new, count } = bucket_intersect(bucket1, bucket2)
-    { new, count }
+    bucket_intersect(bucket1, bucket2)
   end
 
   defp bucket_intersect([], _) do

  end

  defp bucket_difference([], bucket) do
    []
  end

  defp bucket_difference(bucket, []) do
    bucket
  end

  defp bucket_put([m|_]=bucket, { :put, member }) when m > member do

    end
  end

  defp set_difference(ordered(bucket: bucket1, size: size), ordered(bucket: bucket2)) do
    { new, count } = bucket_difference(bucket1, bucket2)
    ordered(bucket: new, size: size - count)
  end

  defp set_difference(trie(size: size1) = set1, set2) do
