diff --git a/project.api.php b/project.api.php
index 96a0539..3fe59e9 100644
--- a/project.api.php
+++ b/project.api.php
@@ -49,11 +49,11 @@ function hook_project_permission_alter(&$permissions, $project = NULL) {
 }
 
 /**
- * Invoked whenever a project maintainer is added or updated.
+ * Invoked whenever a project maintainer is added.
  *
  * This gives any modules that are providing their own per-project permissions
  * a chance to store the data about a maintainer's permissions whenever the
- * record for that maintainer is being saved.
+ * record for that maintainer is being added.
  *
  * @param $nid
  *   The Project NID to save the maintainer information for.
@@ -66,13 +66,30 @@ function hook_project_permission_alter(&$permissions, $project = NULL) {
  *
  * @see hook_project_permission_info()
  */
-function hook_project_maintainer_save($nid, $uid, $permissions) {
-  // Try to update an existing record for this maintainer for our permission.
+function hook_project_maintainer_add($nid, $uid, $permissions) {
+  db_query("INSERT INTO {example_project_maintainer} (nid, uid, some_project_permission) VALUES (%d, %d, %d)", $nid, $uid, !empty($permissions['some project permission']));
+}
+
+/**
+ * Invoked whenever a project maintainer is updated.
+ *
+ * This gives any modules that are providing their own per-project permissions
+ * a chance to store the data about a maintainer's permissions whenever the
+ * record for that maintainer is being updated.
+ *
+ * @param $nid
+ *   The Project NID to save the maintainer information for.
+ * @param $uid
+ *   The user ID of the maintainer to save.
+ * @param array $permissions
+ *   Associative array of which project-level permissions the maintainer
+ *   should have. The keys are permission names, and the values are if the
+ *   permission should be granted or not.
+ *
+ * @see hook_project_permission_info()
+ */
+function hook_project_maintainer_update($nid, $uid, $permissions) {
   db_query("UPDATE {example_project_maintainer} SET some_project_permission = %d WHERE nid = %d AND uid = %d", !empty($permissions['some project permission']), $nid, $uid);
-  if (!db_affected_rows()) {
-    // If we didn't have a record to update, add this as a new maintainer.
-    db_query("INSERT INTO {example_project_maintainer} (nid, uid, some_project_permission) VALUES (%d, %d, %d)", $nid, $uid, !empty($permissions['some project permission']));
-  }
 }
 
 /**
diff --git a/project.module b/project.module
index 94e77c6..36a1e76 100644
--- a/project.module
+++ b/project.module
@@ -876,8 +876,9 @@ function project_project_permission_info($project = NULL) {
  * Save the permissions associated with a maintainer for a given project.
  *
  * This creates a new maintainer record if none currently exists. Furthermore,
- * it invokes hook_project_maintainer_save() to give other modules a chance to
- * act on the fact that a maintainer is being saved.
+ * it invokes hook_project_maintainer_add() and hook_project_maintainer_update()
+ * to give other modules a chance to act on the fact that a maintainer is being 
+ * added or updated.
  *
  * @param $nid
  *   The Project NID to update the maintainer for.
@@ -888,7 +889,8 @@ function project_project_permission_info($project = NULL) {
  *   should have. The keys are permission names, and the values are if the
  *   permission should be granted or not.
  *
- * @see hook_project_maintainer_save()
+ * @see hook_project_maintainer_add()
+ * @see hook_project_maintainer_update()
  * @see hook_project_permission_info()
  */
 function project_maintainer_save($nid, $uid, $permissions = array()) {
@@ -897,12 +899,18 @@ function project_maintainer_save($nid, $uid, $permissions = array()) {
   if (!db_affected_rows()) {
     // Didn't update anything, add this as a new maintainer, instead.
     db_query("INSERT INTO {project_maintainer} (nid, uid, edit_project, administer_maintainers) VALUES (%d, %d, %d, %d)", $nid, $uid, !empty($permissions['edit project']), !empty($permissions['administer maintainers']));
+    
+    // Invoke hook_project_maintainer_add() to notify other modules that this
+    // maintainer is being added so they can take any actions or record any
+    // data they need to.
+    module_invoke_all('project_maintainer_add', $nid, $uid, $permissions);  
+	}
+  else {
+    // Invoke hook_project_maintainer_update() to let other modules know this
+    // maintainer is being updated so they can take any actions or record any
+    // data they need to.
+    module_invoke_all('project_maintainer_update', $nid, $uid, $permissions);
   }
-
-  // Invoke hook_project_maintainer_save() to let other modules know this
-  // maintainer is being saved so they can take any actions or record any
-  // data they need to.
-  module_invoke_all('project_maintainer_save', $nid, $uid, $permissions);
 }
 
 /**
