diff --git a/lib/action_kit_api/data_model.rb b/lib/action_kit_api/data_model.rb
index <HASH>..<HASH> 100644
--- a/lib/action_kit_api/data_model.rb
+++ b/lib/action_kit_api/data_model.rb
@@ -17,6 +17,10 @@ module ActionKitApi
     end
     
     def save
+      if self.respond_to?('before_save')
+        self.send('before_save')
+      end
+
       class_name = self.class.to_s.split("::").last
 
       raise MissingRequiredAttributeException unless self.valid?
@@ -32,6 +36,12 @@ module ActionKitApi
 
       # Update ourselves to include the data that the server populated 
       self.update(response)
+      
+      if self.respond_to?('after_save')
+        self.send('after_save')
+      end
+
+      self
     end
 
     # Updates all the instance variables in our local object with
@@ -39,6 +49,10 @@ module ActionKitApi
     # keys in the hash that is passed, and will not update/add non-existant
     # attributes
     def update(hash = {})
+      if self.respond_to?('before_update')
+        self.send('before_update')
+      end
+
       hash.each do |k,v|
         # The name of the setter for the value of k
         setter = "#{k}="
@@ -49,6 +63,12 @@ module ActionKitApi
           self.send(setter, v)
         end
       end
+
+      if self.respond_to?('after_update')
+        self.send('after_update')
+      end
+
+      self
     end
 
     def valid?
Added before and after hooks to save and update