diff --git a/lib/fabrication/schematic.rb b/lib/fabrication/schematic.rb
index <HASH>..<HASH> 100644
--- a/lib/fabrication/schematic.rb
+++ b/lib/fabrication/schematic.rb
@@ -25,11 +25,7 @@ class Fabrication::Schematic
   def generate(options={}, overrides={}, &block)
     attributes = merge(overrides, &block).attributes
     if options[:attributes]
-      hash = defined?(HashWithIndifferentAccess) ? HashWithIndifferentAccess.new : {}
-      attributes.inject(hash) do |hash, attribute|
-        value = attribute.value.respond_to?(:call) ? attribute.value.call : attribute.value
-        hash.merge(attribute.name => value)
-      end.merge(overrides)
+      to_hash(attributes, overrides)
     else
       generator.new(klass).generate(options, attributes)
     end
@@ -93,4 +89,14 @@ class Fabrication::Schematic
     end
   end
 
+  private
+
+  def to_hash(attrs, overrides)
+    hash = defined?(HashWithIndifferentAccess) ? HashWithIndifferentAccess.new : {}
+    attributes.inject(hash) do |hash, attribute|
+      value = attribute.value.respond_to?(:call) ? attribute.value.call : attribute.value
+      hash.merge(attribute.name => value)
+    end.merge(overrides)
+  end
+
 end
Extract hash generation to to_hash in schematic