diff --git a/app/models/person.rb b/app/models/person.rb
index 84edbed3d815a525cc750538449606025ae541f0..8003e8520168b8f84adc54102d4e3ec2e4228d32 100644
--- a/app/models/person.rb
+++ b/app/models/person.rb
@@ -6,6 +6,7 @@ class Person
   xml_accessor :email
   xml_accessor :url
   xml_accessor :profile, :as => Profile
+  xml_reader :serialized_key
   
   
   key :email, String, :unique => true
@@ -51,6 +52,12 @@ class Person
     serialized_key = new_key.export
   end
 
+  def serialized_key= new_key
+    raise "Don't change a key" if serialized_key
+    
+    @serialized_key = new_key
+  end
+
   def public_key_hash
     Base64.encode64 OpenSSL::Digest::SHA256.new(self.export_key).to_s
   end
@@ -59,7 +66,6 @@ class Person
     encryption_key.public_key.export
   end
 
-
   def owns?(post)
     self.id == post.person.id
   end
diff --git a/lib/diaspora/parser.rb b/lib/diaspora/parser.rb
index 40c439f865444f1821c21db32b09b95e41583c26..51523724def9eb43129a4fc58b708ea99a2af1df 100644
--- a/lib/diaspora/parser.rb
+++ b/lib/diaspora/parser.rb
@@ -9,7 +9,6 @@ module Diaspora
     def self.parse_or_find_person_from_xml(xml)
       doc = Nokogiri::XML(xml) { |cfg| cfg.noblanks }
       person_xml = doc.xpath("//person").to_s
-      Rails.logger.debug("We're in the parser: #{person_xml}")
       person_id = doc.xpath("//person/_id").text.to_s
       person = Person.first(:_id => person_id)
       person ? person : Person.from_xml( person_xml)
diff --git a/spec/lib/diaspora_parser_spec.rb b/spec/lib/diaspora_parser_spec.rb
index d57ccc8ce94b87b3f94f5ae56cc40cb63376b228..5197080dc3b58f877606e937562d085f3d973160 100644
--- a/spec/lib/diaspora_parser_spec.rb
+++ b/spec/lib/diaspora_parser_spec.rb
@@ -18,7 +18,7 @@ describe Diaspora::Parser do
       @xml = Factory.build(:status_message).to_diaspora_xml 
     end
     
-    it 'should be able to correctly handle comments' do
+     it 'should be able to correctly handle comments with person in db' do
       person = Factory.create(:person, :email => "test@testing.com")
       post = Factory.create(:status_message, :person => @user.person)
       comment = Factory.build(:comment, :post => post, :person => person, :text => "Freedom!")
@@ -29,6 +29,23 @@ describe Diaspora::Parser do
       comment.person.should == person
       comment.post.should == post
     end
+     
+    it 'should be able to correctly handle person on a comment with person not in db' do
+      commenter = Factory.create(:user)
+      commenter_group = commenter.group :name => "bruisers"
+      friend_users(@user, @group, commenter, commenter_group)
+      post = @user.post :status_message, :message => "hello", :to => @group.id
+      comment = commenter.comment "Fool!", :on => post
+      
+      xml = comment.to_diaspora_xml 
+      commenter.delete
+      commenter.person.delete
+      
+      parsed_person = Diaspora::Parser::parse_or_find_person_from_xml(xml)
+      parsed_person.save.should be true
+      parsed_person.email.should == commenter.person.email
+      parsed_person.profile.should_not be_nil
+    end
     
     it 'should marshal retractions' do
       person = Factory.create(:person)
diff --git a/spec/models/comments_spec.rb b/spec/models/comments_spec.rb
index a9066f6d04745e93865b87283d2f87592e1c3835..95d2c977c122b1c67289a99c73311fa0516a6d38 100644
--- a/spec/models/comments_spec.rb
+++ b/spec/models/comments_spec.rb
@@ -4,7 +4,10 @@ describe Comment do
   describe "user" do
     before do
       @user = Factory.create :user
-      @user.person.save
+      @group = @user.group(:name => "Doofuses")
+
+      @user2 = Factory.create(:user)
+      @group2 = @user2.group(:name => "Lame-faces")
     end
     it "should be able to comment on his own status" do
       status = Factory.create(:status_message, :person => @user.person)
@@ -31,10 +34,7 @@ describe Comment do
 
     describe 'comment propagation' do
       before do
-        @group = @user.group(:name => "Doofuses")
 
-        @user2 = Factory.create(:user)
-        @group2 = @user2.group(:name => "Lame-faces")
 
         request = @user.send_friend_request_to(@user2.receive_url, @group.id)
         reversed_request = @user2.accept_friend_request( request.id, @group2.id )
@@ -79,5 +79,16 @@ describe Comment do
         @user.receive(comment.to_diaspora_xml)
       end
     end
+    describe 'serialization' do
+      it 'should serialize the commenter' do
+        commenter = Factory.create(:user)
+        commenter_group = commenter.group :name => "bruisers"
+        friend_users(@user, @group, commenter, commenter_group)
+        post = @user.post :status_message, :message => "hello", :to => @group.id
+        comment = commenter.comment "Fool!", :on => post
+        comment.person.should_not == @user.person
+        comment.to_diaspora_xml.include?(commenter.person.id.to_s).should be true
+      end
+    end
   end
 end
diff --git a/spec/models/user/receive_spec.rb b/spec/models/user/receive_spec.rb
index 9480dd60c8dad980ff70583b089e8b5c9cc8869d..46943512f6de1d34f51610faf31cba8f03deada2 100644
--- a/spec/models/user/receive_spec.rb
+++ b/spec/models/user/receive_spec.rb
@@ -136,34 +136,30 @@ describe User do
 
   describe 'comments' do
     it 'should correctly marshal to the downstream user' do
+      
+      friend_users(@user, @group, @user3, @group3)
+      post = @user.post :status_message, :message => "hello", :to => @group.id
 
-    
-    @user3 = Factory.create(:user)
-    @group3 = @user3.group(:name => 'heroes')
-
-    puts @user.inspect
-    puts @group.inspect
-    friend_users(@user, @group, @user3, @group3)
-
-
-    status_message = @user.post :status_message, :message => 'store this!', :to => @group.id
-
-    @user2.receive status_message.to_diaspora_xml
-    @user3.receive status_message.to_diaspora_xml
+      @user2.receive post.to_diaspora_xml
+      @user3.receive post.to_diaspora_xml
 
-    comment = @user2.comment('tada',:on => status_message)
-    @user.receive comment.to_diaspora_xml
-    @user.reload
-    
-    @user.raw_visible_posts.first.comments.first.nil?.should be false
-    upstream_comment = @user.raw_visible_posts.first.comments.first
+      comment = @user2.comment('tada',:on => post)
+      @user.receive comment.to_diaspora_xml
+      @user.reload
 
-    @user2.person.delete
-    @user3.receive upstream_comment.to_diaspora_xml
-    @user3.reload
+      @user2.person.delete
+      @user2.delete
+      comment_id = comment.id
 
-    @user3.raw_visible_posts.first.comments.first.nil?.should be false
+      comment.delete
+      @user3.receive comment.to_diaspora_xml
+      @user3.reload
 
+      new_comment = Comment.find_by_id(comment_id)
+      new_comment.should_not be_nil
+      new_comment.person.should_not be_nil
+      new_comment.person.profile.should_not be_nil
+      
     end
   end
 end