diff --git a/ril/libril/ril.cpp b/ril/libril/ril.cpp
index 890e738..975518d 100644
--- a/ril/libril/ril.cpp
+++ b/ril/libril/ril.cpp
@@ -741,6 +741,7 @@
     int32_t t;
     status_t status;
 
+    ALOGD("dispatchSmsWrite");
     memset (&args, 0, sizeof(args));
 
     status = p.readInt32(&t);
@@ -796,6 +797,7 @@
 #endif
     status_t status;
 
+    ALOGD("dispatchDial");
     memset (&dial, 0, sizeof(dial));
 
     dial.address = strdupReadString(p);
@@ -929,6 +931,7 @@
     int size;
     status_t status;
 
+    ALOGD("dispatchSIM_IO");
     memset (&simIO, 0, sizeof(simIO));
 
     // note we only check status at the end
@@ -1006,6 +1009,7 @@
     status_t status;
     RIL_SIM_APDU apdu;
 
+    ALOGD("dispatchSIM_APDU");
     memset (&apdu, 0, sizeof(RIL_SIM_APDU));
 
     // Note we only check status at the end. Any single failure leads to
@@ -1075,6 +1079,7 @@
     int32_t t;
     status_t status;
 
+    ALOGD("dispatchCallForward");
     memset (&cff, 0, sizeof(cff));
 
     // note we only check status at the end
@@ -1418,6 +1423,7 @@
     status_t status;
     int32_t digitCount;
 
+    ALOGD("dispatchCdmaSmsAck");
     memset(&rcsa, 0, sizeof(rcsa));
 
     status = p.readInt32(&t);
@@ -4606,11 +4612,7 @@
 wakeTimeoutCallback (void *param) {
     // We're using "param != NULL" as a cancellation mechanism
     if (param == NULL) {
-        //RLOGD("wakeTimeout: releasing wake lock");
-
         releaseWakeLock();
-    } else {
-        //RLOGD("wakeTimeout: releasing wake lock CANCELLED");
     }
 }
 
diff --git a/ril/libril/ril_event.cpp b/ril/libril/ril_event.cpp
index 6bdf59d..84b8b72 100644
--- a/ril/libril/ril_event.cpp
+++ b/ril/libril/ril_event.cpp
@@ -120,18 +120,20 @@
 
 static void removeFromList(struct ril_event * ev)
 {
-    dlog("~~~~ Removing event ~~~~");
+    dlog("~~~~ +removeFromList ~~~~");
     dump_event(ev);
 
     ev->next->prev = ev->prev;
     ev->prev->next = ev->next;
     ev->next = NULL;
     ev->prev = NULL;
+    dlog("~~~~ -removeFromList ~~~~");
 }
 
 
 static void removeWatch(struct ril_event * ev, int index)
 {
+    dlog("~~~~ +removeWatch ~~~~");
     watch_table[index] = NULL;
     ev->index = -1;
 
@@ -150,6 +152,7 @@
         nfds = n + 1;
         dlog("~~~~ nfds = %d ~~~~", nfds);
     }
+    dlog("~~~~ -removeWatch ~~~~");
 }
 
 static void processTimeouts()
