diff --git a/src/com/android/providers/calendar/CalendarProvider.java b/src/com/android/providers/calendar/CalendarProvider.java
index c57539a..d4f9c4e 100644
--- a/src/com/android/providers/calendar/CalendarProvider.java
+++ b/src/com/android/providers/calendar/CalendarProvider.java
@@ -78,7 +78,6 @@
 import com.google.android.googlelogin.GoogleLoginServiceConstants;
 import com.google.wireless.gdata.calendar.client.CalendarClient;
 import com.google.wireless.gdata.calendar.parser.xml.XmlCalendarGDataParserFactory;
-import com.google.wireless.gdata.calendar.data.Who;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -86,8 +85,6 @@
 import java.util.Map;
 import java.util.Set;
 import java.util.TimeZone;
-import java.util.Vector;
-import java.util.Enumeration;
 import java.io.IOException;
 
 public class CalendarProvider extends AbstractSyncableContentProvider {
@@ -3289,6 +3286,8 @@
             // in the DeletedEvents table.  We will let those
             // deleted events propagate to the server.
 
+            // TODO: cancel any pending/ongoing syncs for this calendar.
+
             // TODO: there is a corner case to deal with here: namely, if
             // we edit or delete an event on the phone and then remove
             // (that is, stop syncing) a calendar, and if we also make a
diff --git a/src/com/android/providers/calendar/CalendarSyncAdapter.java b/src/com/android/providers/calendar/CalendarSyncAdapter.java
index b3a4909..84dbcb1 100644
--- a/src/com/android/providers/calendar/CalendarSyncAdapter.java
+++ b/src/com/android/providers/calendar/CalendarSyncAdapter.java
@@ -1380,7 +1380,7 @@
             return;
         }
 
-        // - Get a cursor (A) over all selected calendars over all accounts
+        // - Get a cursor (A) over all sync'd calendars over all accounts
         // - Get a cursor (B) over all subscribed feeds for calendar
         // - If an item is in A but not B then add a subscription
         // - If an item is in B but not A then remove the subscription
@@ -1390,7 +1390,7 @@
         Cursor cursorB = null;
         try {
             cursorA = Calendar.Calendars.query(cr, null /* projection */,
-                    Calendar.Calendars.SELECTED + "=1", CALENDAR_KEY_SORT_ORDER);
+                    Calendar.Calendars.SYNC_EVENTS + "=1", CALENDAR_KEY_SORT_ORDER);
             int urlIndexA = cursorA.getColumnIndexOrThrow(Calendar.Calendars.URL);
             int accountNameIndexA = cursorA.getColumnIndexOrThrow(Calendar.Calendars._SYNC_ACCOUNT);
             int accountTypeIndexA =
