diff --git a/lib/swift/result.rb b/lib/swift/result.rb
index <HASH>..<HASH> 100644
--- a/lib/swift/result.rb
+++ b/lib/swift/result.rb
@@ -17,7 +17,7 @@ module Swift
 
     def each
       @result.each do |tuple|
-        yield @record.allocate.tap {|s| s.tuple = tuple}
+        yield @record.load(tuple)
       end
     end
   end # Result
diff --git a/test/test_record.rb b/test/test_record.rb
index <HASH>..<HASH> 100644
--- a/test/test_record.rb
+++ b/test/test_record.rb
@@ -96,6 +96,13 @@ describe 'record' do
         assert user.update(name: 'dave')
         assert user.delete
       end
+
+      it 'should use Record.load to create new instances from database' do
+        klass = Class.new(@user) { def self.load tuple; super.tap {|i| i.tuple[:name] = 'test'}; end }
+        user = klass.create(name: 'dan')
+        user = klass.get(id: user.id)
+        assert_equal 'test', user.name
+      end
     end
   end
 end
bugfix: Result#each should call Record.load