diff --git a/lib/drafting/instance_methods.rb b/lib/drafting/instance_methods.rb
index <HASH>..<HASH> 100644
--- a/lib/drafting/instance_methods.rb
+++ b/lib/drafting/instance_methods.rb
@@ -5,16 +5,7 @@ module Drafting
 
       draft = Draft.find_by_id(self.draft_id) || Draft.new
 
-      new_object = self.class.new
-
-      attrs = self.attributes.select { |k,v| v != new_object.attributes[k] }
-      self.draft_extra_attributes.each do |name|
-        if (value = self.send(name)) != new_object.send(name)
-          attrs[name.to_s] = value
-        end
-      end
-
-      draft.data = attrs
+      draft.data = attributes_to_store_for_draft
       draft.target_type = self.class.name
       draft.user = user
       draft.parent = self.send(self.class.draft_parent) if self.class.draft_parent
@@ -38,5 +29,20 @@ module Drafting
         self.draft_id = nil if draft.destroy
       end
     end
+
+    def attributes_to_store_for_draft
+      # First, select attributes with values different from default
+      new_object = self.class.new
+      attrs = self.attributes.select { |k,v| v != new_object.attributes[k] }
+
+      # Second, add extra attributes with values different from default
+      self.draft_extra_attributes.each do |name|
+        if (value = self.send(name)) != new_object.send(name)
+          attrs[name.to_s] = value
+        end
+      end
+
+      attrs
+    end
   end
 end
Refactor InstanceMethods (split method)