   the module to dispatch to. Returns module.Record for records
   which should be properly handled by the dispatching function.
   """
-  def impl_for(env, conversions) do
+  def impl_for(env, conversions, fallback) do
     contents = lc kind inlist conversions do
-      each_impl_for(kind, conversions)
+      each_impl_for(kind, if fallback, do: conversions)
     end
 
     # If we don't implement all protocols and any is not in the

    end
  end

  # Specially handle records with fallbacks
  defp each_impl_for({ _, :is_record }, conversions) do
    quote do
      defp __raw_impl__(arg) when is_tuple(arg) and is_atom(:erlang.element(1, arg)) do


        # Define callbacks and meta information
        { conversions, fallback } = Protocol.conversions_for(__MODULE__, @only, @except)
        Protocol.impl_for(__ENV__, conversions, fallback)
        Protocol.meta(__ENV__, @functions, fallback)
      end
    end
