diff --git a/src/com/android/telecomm/Call.java b/src/com/android/telecomm/Call.java
index 995957c..7488ffd 100644
--- a/src/com/android/telecomm/Call.java
+++ b/src/com/android/telecomm/Call.java
@@ -410,8 +410,6 @@
     }
 
     void handleSuccessfulOutgoing() {
-        setState(CallState.DIALING);
-
         // TODO(santoscordon): Replace this with state transitions related to "connecting".
         for (Listener l : mListeners) {
             l.onSuccessfulOutgoingCall(this);
diff --git a/src/com/android/telecomm/CallServiceWrapper.java b/src/com/android/telecomm/CallServiceWrapper.java
index 4040e33..9b96890 100644
--- a/src/com/android/telecomm/CallServiceWrapper.java
+++ b/src/com/android/telecomm/CallServiceWrapper.java
@@ -181,7 +181,7 @@
         @Override
         public void handleFailedOutgoingCall(String callId, String reason) {
             mCallIdMapper.checkValidCallId(callId);
-            Log.d(this, "handleFailedOutgoingCall %d", callId);
+            Log.d(this, "handleFailedOutgoingCall %s", callId);
             SomeArgs args = SomeArgs.obtain();
             args.arg1 = callId;
             args.arg2 = reason;
diff --git a/src/com/android/telecomm/CallsManager.java b/src/com/android/telecomm/CallsManager.java
index 48aa525..b21be69 100644
--- a/src/com/android/telecomm/CallsManager.java
+++ b/src/com/android/telecomm/CallsManager.java
@@ -126,7 +126,12 @@
         } else if (mPendingHandoffCalls.contains(call)) {
             updateHandoffCallServiceDescriptor(call.getOriginalCall(),
                     call.getCallService().getDescriptor());
+        } else {
+            Log.wtf(this, "unexpected successful call notification: %s", call);
+            return;
         }
+
+        markCallAsDialing(call);
     }
 
     @Override
@@ -391,6 +396,8 @@
         tempCall.setExtras(originalCall.getExtras());
         tempCall.setCallServiceSelector(originalCall.getCallServiceSelector());
         mPendingHandoffCalls.add(tempCall);
+        tempCall.addListener(this);
+
         Log.d(this, "Placing handoff call");
         tempCall.startOutgoing();
     }
@@ -595,6 +602,7 @@
         // Remove the transient handoff call object (don't disconnect because the call could still
         // be live).
         mPendingHandoffCalls.remove(handoffCall);
+        handoffCall.removeListener(this);
 
         if (wasSuccessful) {
             // Disconnect.
diff --git a/src/com/android/telecomm/Log.java b/src/com/android/telecomm/Log.java
index b25aec1..ebcc175 100644
--- a/src/com/android/telecomm/Log.java
+++ b/src/com/android/telecomm/Log.java
@@ -32,7 +32,7 @@
     // Generic tag for all In Call logging
     private static final String TAG = "Telecomm";
 
-    public static final boolean FORCE_LOGGING = true; /* STOP SHIP if true */
+    public static final boolean FORCE_LOGGING = false; /* STOP SHIP if true */
     public static final boolean DEBUG = isLoggable(android.util.Log.DEBUG);
     public static final boolean INFO = isLoggable(android.util.Log.INFO);
     public static final boolean VERBOSE = isLoggable(android.util.Log.VERBOSE);
@@ -201,7 +201,7 @@
             msg = (args == null || args.length == 0) ? format
                     : String.format(Locale.US, format, args);
         } catch (IllegalFormatException ife) {
-            wtf("Log", ife, "IllegalFormatException: formatString='%s' numArgs=%d", format,
+            e("Log", ife, "IllegalFormatException: formatString='%s' numArgs=%d", format,
                     args.length);
             msg = format + " (An error occurred while formatting the message.)";
         }
