diff --git a/src/com/android/telecomm/Call.java b/src/com/android/telecomm/Call.java
index d6373a1..efd1c86 100644
--- a/src/com/android/telecomm/Call.java
+++ b/src/com/android/telecomm/Call.java
@@ -566,15 +566,15 @@
         if (mDirectToVoicemailQueryPending) {
             if (mCallerInfo != null && mCallerInfo.shouldSendToVoicemail) {
                 Log.i(this, "Directing call to voicemail: %s.", this);
-                // TODO(santoscordon): Once we move State handling from CallsManager to Call, we
+                // TODO: Once we move State handling from CallsManager to Call, we
                 // will not need to set RINGING state prior to calling reject.
                 setState(CallState.RINGING);
                 reject(false, null);
             } else {
-                // TODO(santoscordon): Make this class (not CallsManager) responsible for changing
+                // TODO: Make this class (not CallsManager) responsible for changing
                 // the call state to RINGING.
 
-                // TODO(santoscordon): Replace this with state transition to RINGING.
+                // TODO: Replace this with state transition to RINGING.
                 for (Listener l : mListeners) {
                     l.onSuccessfulIncomingCall(this);
                 }
@@ -841,7 +841,7 @@
     }
 
     void splitFromConference() {
-        // TODO(santoscordon): todo
+        // TODO: todo
     }
 
     void swapWithBackgroundCall() {
diff --git a/src/com/android/telecomm/CallActivity.java b/src/com/android/telecomm/CallActivity.java
index eb65c25..607d994 100644
--- a/src/com/android/telecomm/CallActivity.java
+++ b/src/com/android/telecomm/CallActivity.java
@@ -56,7 +56,7 @@
     protected void onCreate(Bundle bundle) {
         super.onCreate(bundle);
 
-        // TODO(santoscordon): This activity will be displayed until the next screen which could be
+        // TODO: This activity will be displayed until the next screen which could be
         // the in-call UI and error dialog or potentially a call-type selection dialog.
         // Traditionally, this has been a black screen with a spinner. We need to reevaluate if this
         // is still desired and add back if necessary. Currently, the activity is set to NoDisplay
@@ -69,7 +69,7 @@
         Log.d(this, " - intent = %s", intent);
         Log.d(this, " - configuration = %s", configuration);
 
-        // TODO(santoscordon): Figure out if there is something to restore from bundle.
+        // TODO: Figure out if there is something to restore from bundle.
         // See OutgoingCallBroadcaster in services/Telephony for more.
 
         processIntent(intent);
diff --git a/src/com/android/telecomm/CallIdMapper.java b/src/com/android/telecomm/CallIdMapper.java
index 2366343..ae13860 100644
--- a/src/com/android/telecomm/CallIdMapper.java
+++ b/src/com/android/telecomm/CallIdMapper.java
@@ -85,7 +85,7 @@
     void checkValidCallId(String callId) {
         // Note, no need for thread check, this method is thread safe.
         if (!isValidCallId(callId)) {
-            // TODO(santoscordon): Re-enable this once we stop getting updates to
+            // TODO: Re-enable this once we stop getting updates to
             // ConnectionServiceWrapper for remote connections.
             //throw new IllegalArgumentException(
             //        "Invalid call ID for " + mCallIdPrefix + ": " + callId);
diff --git a/src/com/android/telecomm/CallsManager.java b/src/com/android/telecomm/CallsManager.java
index 5ce9fe8..46e32bc 100644
--- a/src/com/android/telecomm/CallsManager.java
+++ b/src/com/android/telecomm/CallsManager.java
@@ -42,7 +42,7 @@
  */
 public final class CallsManager extends Call.ListenerBase {
 
-    // TODO(santoscordon): Consider renaming this CallsManagerPlugin.
+    // TODO: Consider renaming this CallsManagerPlugin.
     interface CallsManagerListener {
         void onCallAdded(Call call);
         void onCallRemoved(Call call);
@@ -276,7 +276,7 @@
                 false /* isConference */);
 
         call.setExtras(extras);
-        // TODO(santoscordon): Move this to be a part of addCall()
+        // TODO: Move this to be a part of addCall()
         call.addListener(this);
         call.startCreateConnection();
     }
@@ -324,7 +324,7 @@
         call.setStartWithSpeakerphoneOn(speakerphoneOn);
         call.setVideoState(videoState);
 
-        // TODO(santoscordon): Move this to be a part of addCall()
+        // TODO: Move this to be a part of addCall()
         call.addListener(this);
         addCall(call);
 
@@ -392,9 +392,9 @@
                 Log.v(this, "Holding active/dialing call %s before answering incoming call %s.",
                         mForegroundCall, call);
                 mForegroundCall.hold();
-                // TODO(santoscordon): Wait until we get confirmation of the active call being
+                // TODO: Wait until we get confirmation of the active call being
                 // on-hold before answering the new call.
-                // TODO(santoscordon): Import logic from CallManager.acceptCall()
+                // TODO: Import logic from CallManager.acceptCall()
             }
 
             for (CallsManagerListener listener : mListeners) {
@@ -694,7 +694,7 @@
     private void addCall(Call call) {
         mCalls.add(call);
 
-        // TODO(santoscordon): Update mForegroundCall prior to invoking
+        // TODO: Update mForegroundCall prior to invoking
         // onCallAdded for calls which immediately take the foreground (like the first call).
         for (CallsManagerListener listener : mListeners) {
             listener.onCallAdded(call);
@@ -737,9 +737,9 @@
             // Unfortunately, in the telephony world the radio is king. So if the call notifies
             // us that the call is in a particular state, we allow it even if it doesn't make
             // sense (e.g., ACTIVE -> RINGING).
-            // TODO(santoscordon): Consider putting a stop to the above and turning CallState
+            // TODO: Consider putting a stop to the above and turning CallState
             // into a well-defined state machine.
-            // TODO(santoscordon): Define expected state transitions here, and log when an
+            // TODO: Define expected state transitions here, and log when an
             // unexpected transition occurs.
             call.setState(newState);
 
@@ -759,7 +759,7 @@
     private void updateForegroundCall() {
         Call newForegroundCall = null;
         for (Call call : mCalls) {
-            // TODO(santoscordon): Foreground-ness needs to be explicitly set. No call, regardless
+            // TODO: Foreground-ness needs to be explicitly set. No call, regardless
             // of its state will be foreground by default and instead the connection service should
             // be notified when its calls enter and exit foreground state. Foreground will mean that
             // the call should play audio and listen to microphone if it wants.
diff --git a/src/com/android/telecomm/InCallController.java b/src/com/android/telecomm/InCallController.java
index e12372d..36f6a7b 100644
--- a/src/com/android/telecomm/InCallController.java
+++ b/src/com/android/telecomm/InCallController.java
@@ -146,7 +146,7 @@
     @Override
     public void onCallRemoved(Call call) {
         if (CallsManager.getInstance().getCalls().isEmpty()) {
-            // TODO(sail): Wait for all messages to be delivered to the service before unbinding.
+            // TODO: Wait for all messages to be delivered to the service before unbinding.
             unbind();
         }
         call.removeListener(mCallListener);
@@ -238,7 +238,7 @@
                     UserHandle.CURRENT)) {
                 Log.w(this, "Could not connect to the in-call app (%s)", component);
 
-                // TODO(santoscordon): Implement retry or fall-back-to-default logic.
+                // TODO: Implement retry or fall-back-to-default logic.
             }
         }
     }
diff --git a/src/com/android/telecomm/InCallTonePlayer.java b/src/com/android/telecomm/InCallTonePlayer.java
index 7f08587..5ccdafa 100644
--- a/src/com/android/telecomm/InCallTonePlayer.java
+++ b/src/com/android/telecomm/InCallTonePlayer.java
@@ -193,10 +193,10 @@
                 return;
             }
 
-            // TODO(santoscordon): Certain CDMA tones need to check the ringer-volume state before
+            // TODO: Certain CDMA tones need to check the ringer-volume state before
             // playing. See CallNotifier.InCallTonePlayer.
 
-            // TODO(santoscordon): Some tones play through the end of a call so we need to inform
+            // TODO: Some tones play through the end of a call so we need to inform
             // CallAudioManager that we want focus the same way that Ringer does.
 
             synchronized (this) {
diff --git a/src/com/android/telecomm/MissedCallNotifier.java b/src/com/android/telecomm/MissedCallNotifier.java
index e9e453b..fe90e46 100644
--- a/src/com/android/telecomm/MissedCallNotifier.java
+++ b/src/com/android/telecomm/MissedCallNotifier.java
@@ -39,7 +39,7 @@
 
 /**
  * Creates a notification for calls that the user missed (neither answered nor rejected).
- * TODO(santoscordon): Make TelephonyManager.clearMissedCalls call into this class.
+ * TODO: Make TelephonyManager.clearMissedCalls call into this class.
  * STOPSHIP: Resolve b/13769374 about moving this class to InCall.
  */
 class MissedCallNotifier extends CallsManagerListenerBase {
@@ -183,7 +183,7 @@
         } else if (!TextUtils.isEmpty(handle)) {
             // A handle should always be displayed LTR using {@link BidiFormatter} regardless of the
             // content of the rest of the notification.
-            // TODO(santoscordon): Does this apply to SIP addresses?
+            // TODO: Does this apply to SIP addresses?
             BidiFormatter bidiFormatter = BidiFormatter.getInstance();
             return bidiFormatter.unicodeWrap(handle, TextDirectionHeuristics.LTR);
         } else {
diff --git a/src/com/android/telecomm/TelecommServiceImpl.java b/src/com/android/telecomm/TelecommServiceImpl.java
index 3598422..e0aaa18 100644
--- a/src/com/android/telecomm/TelecommServiceImpl.java
+++ b/src/com/android/telecomm/TelecommServiceImpl.java
@@ -411,7 +411,7 @@
     }
 
     private void enforceModifyPermissionOrCallingPackage(String packageName) {
-        // TODO(santoscordon): Use a new telecomm permission for this instead of reusing modify.
+        // TODO: Use a new telecomm permission for this instead of reusing modify.
         try {
             enforceModifyPermission();
         } catch (SecurityException e) {
