diff --git a/include/class.team.php b/include/class.team.php
index d6963eb9213272959dc5fe0da0d319b59376a784..a4fd4f8c7af6eb8cbac70a3d27f2f82488cc59ea 100644
--- a/include/class.team.php
+++ b/include/class.team.php
@@ -208,13 +208,19 @@ implements TemplateVariable {
           }
           $member->setAlerts($alerts);
       }
-      if (!$errors && $dropped) {
+
+      if ($errors)
+          return false;
+
+      $this->members->saveAll();
+      if ($dropped) {
           $this->members
               ->filter(array('staff_id__in' => array_keys($dropped)))
               ->delete();
           $this->members->reset();
       }
-      return !$errors;
+
+      return true;
     }
 
     function save($refetch=false) {
diff --git a/include/staff/team.inc.php b/include/staff/team.inc.php
index 254d1559d6407d5e15d522185e2c62778ff567f4..9362db27d55bd3022505be2f6900907e3dd21a81 100644
--- a/include/staff/team.inc.php
+++ b/include/staff/team.inc.php
@@ -231,7 +231,7 @@ $(document).on('click', 'a.drop-membership', function() {
 });
 
 <?php
-if ($team) {
+if ($team && $team->members) {
     foreach ($team->members->sort(function($a) { return $a->staff->getName(); }) as $member) {
         echo sprintf('addMember(%d, %s, %d, %s);',
             $member->staff_id,