diff --git a/calendar_utils/management/commands/update_callendars.py b/calendar_utils/management/commands/update_callendars.py
index e837549834b9b47486aa9e4ad6c9d6a12a94318c..912faaf88948d2607b742c156ecb67bbe2bc3cf8 100644
--- a/calendar_utils/management/commands/update_callendars.py
+++ b/calendar_utils/management/commands/update_callendars.py
@@ -9,9 +9,25 @@ logger = logging.getLogger(__name__)
 
 class Command(BaseCommand):
     def handle(self, *args, **options):
+        self.stdout.write("Removing orphaned calendars...")
+        for cal in Calendar.objects.filter(
+            districtcenterpage=None,
+            districthomepage=None,
+            elections2021calendarpage=None,
+            senatcampaignhomepage=None,
+            uniwebhomepage=None,
+        ):
+            try:
+                self.stdout.write(f"- {cal.id} | {cal.url}")
+                cal.delete()
+            except Exception as e:
+                logger.error("Calendar delete failed for %s", cal.url, exc_info=True)
+                self.stdout.write("  - failed")
+                self.stdout.write(str(e))
+
         self.stdout.write("Updating calendars...")
         for cal in Calendar.objects.all():
-            self.stdout.write(f"\n@ {cal.url}")
+            self.stdout.write(f"\n@ {cal.id} | {cal.url}")
             try:
                 cal.update_source()
                 self.stdout.write("+ ok")
diff --git a/calendar_utils/models.py b/calendar_utils/models.py
index b16d21378cf7478461bf648500fef989f009410d..335161250f7c8c763a9fb89a11f700035984b25a 100644
--- a/calendar_utils/models.py
+++ b/calendar_utils/models.py
@@ -99,8 +99,6 @@ class CalendarMixin(models.Model):
 
         # delete related Calendar when URL is cleared
         if not self.calendar_url and self.calendar:
-            # TODO handle revisions and maybe other live pages with the same calendar
-            # self.calendar.delete()
             self.calendar = None
 
         super().save(*args, **kwargs)
diff --git a/tests/calendar_utils/test_models.py b/tests/calendar_utils/test_models.py
index 7b2f62c4266be7ff70d8c66ab4427ec88c57e426..52743746ad4e377285480e3413511e38d0acc4b2 100644
--- a/tests/calendar_utils/test_models.py
+++ b/tests/calendar_utils/test_models.py
@@ -145,4 +145,3 @@ def test_calendar_mixin__clear_calendar_url(mocker):
     assert obj.calendar_url is None
     assert obj.calendar is None
     assert m_update.call_count == 0
-    assert Calendar.objects.count() == 0