diff --git a/InCallUI/src/com/android/incallui/CallButtonPresenter.java b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
index d4b2cf2..114685d 100644
--- a/InCallUI/src/com/android/incallui/CallButtonPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
@@ -56,9 +56,14 @@
 
     @Override
     public void onStateChange(InCallState state, CallList callList) {
-        getUi().setVisible(state == InCallState.INCALL);
+        final boolean isVisible = state.isConnectingOrConnected() &&
+                !state.isIncoming();
 
-        if (state == InCallState.INCALL) {
+        getUi().setVisible(isVisible);
+
+        if (state == InCallState.OUTGOING) {
+            mCall = callList.getOutgoingCall();
+        } else if (state == InCallState.INCALL) {
             mCall = callList.getActiveOrBackgroundCall();
         } else {
             mCall = null;
diff --git a/InCallUI/src/com/android/incallui/CallCardPresenter.java b/InCallUI/src/com/android/incallui/CallCardPresenter.java
index 06b1157..5f67a51 100644
--- a/InCallUI/src/com/android/incallui/CallCardPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallCardPresenter.java
@@ -72,6 +72,12 @@
 
         if (state == InCallState.INCOMING) {
             primary = callList.getIncomingCall();
+        } else if (state == InCallState.OUTGOING) {
+            primary = callList.getOutgoingCall();
+
+            // Safe to assume that the primary call is valid since we would not be in the
+            // OUTGOING state without an outgoing call.
+            secondary = callList.getBackgroundCall();
         } else if (state == InCallState.INCALL) {
             primary = callList.getActiveCall();
             if (primary != null) {
diff --git a/InCallUI/src/com/android/incallui/CallHandlerService.java b/InCallUI/src/com/android/incallui/CallHandlerService.java
index 8431fc9..f0d98b2 100644
--- a/InCallUI/src/com/android/incallui/CallHandlerService.java
+++ b/InCallUI/src/com/android/incallui/CallHandlerService.java
@@ -94,6 +94,13 @@
         @Override
         public void onUpdate(List<Call> calls, boolean fullUpdate) {
             Logger.d(CallHandlerService.this, "onUpdate ");
+
+            if (Logger.VERBOSE) {
+                for (Call c : calls) {
+                    Logger.v(this, "Call: " + c);
+                }
+            }
+
             // TODO(klp): Add use of fullUpdate to message
             mMainHandler.sendMessage(mMainHandler.obtainMessage(ON_UPDATE_MULTI_CALL, 0, 0, calls));
         }
diff --git a/InCallUI/src/com/android/incallui/CallList.java b/InCallUI/src/com/android/incallui/CallList.java
index 3a90a7e..5ea4fc5 100644
--- a/InCallUI/src/com/android/incallui/CallList.java
+++ b/InCallUI/src/com/android/incallui/CallList.java
@@ -38,15 +38,6 @@
  * Primary lister of changes to this class is InCallPresenter.
  */
 public class CallList {
-    private static final Map<Integer, String> STATE_MAP = ImmutableMap.<Integer, String>builder()
-            .put(Call.State.ACTIVE, "ACTIVE")
-            .put(Call.State.CALL_WAITING, "CALL_WAITING")
-            .put(Call.State.DIALING, "DIALING")
-            .put(Call.State.IDLE, "IDLE")
-            .put(Call.State.INCOMING, "INCOMING")
-            .put(Call.State.ONHOLD, "ONHOLD")
-            .put(Call.State.INVALID, "INVALID")
-            .build();
 
     private static CallList sInstance;
 
@@ -75,7 +66,7 @@
      * Called when a single call has changed.
      */
     public void onUpdate(Call call) {
-        Logger.d(this, "onUpdate - " + safeCallString(call));
+        Logger.d(this, "onUpdate - " + call);
 
         updateCallInMap(call);
 
@@ -86,7 +77,7 @@
      * Called when a single call has changed.
      */
     public void onUpdate(AbstractMap.SimpleEntry<Call, List<String> > incomingCall) {
-        Logger.d(this, "onUpdate - " + safeCallString(incomingCall.getKey()));
+        Logger.d(this, "onUpdate - " + incomingCall.getKey());
 
         updateCallInMap(incomingCall.getKey());
         updateCallTextMap(incomingCall.getKey(), incomingCall.getValue());
@@ -102,7 +93,7 @@
 
         Preconditions.checkNotNull(callsToUpdate);
         for (Call call : callsToUpdate) {
-            Logger.d(this, "\t" + safeCallString(call));
+            Logger.d(this, "\t" + call);
 
             updateCallInMap(call);
             updateCallTextMap(call, null);
@@ -126,7 +117,7 @@
     }
 
     /**
-     * TODO(klp): Change so that this function is not needed. Instead of assuming there is an active
+     * TODO: Change so that this function is not needed. Instead of assuming there is an active
      * call, the code should rely on the status of a specific Call and allow the presenters to
      * update the Call object when the active call changes.
      */
@@ -138,6 +129,10 @@
         return retval;
     }
 
+    public Call getOutgoingCall() {
+        return getFirstCallWithState(Call.State.DIALING);
+    }
+
     public Call getActiveCall() {
         return getFirstCallWithState(Call.State.ACTIVE);
     }
@@ -205,8 +200,7 @@
             }
         }
 
-        Logger.d(this, "Found " + (retval == null ? "no " : "") + "call with state: " +
-                STATE_MAP.get(state));
+        Logger.d(this, "Found call: " + retval);
         return retval;
     }
 
@@ -252,18 +246,6 @@
     }
 
     /**
-     * Creates a log-safe string for call objects.
-     */
-    private String safeCallString(Call call) {
-        final StringBuffer buffer = new StringBuffer();
-        buffer.append("Call (")
-                .append(call.getCallId())
-                .append("), ")
-                .append(STATE_MAP.get(call.getState()));
-        return buffer.toString();
-    }
-
-    /**
      * Listener interface for any class that wants to be notified of changes
      * to the call list.
      */
diff --git a/InCallUI/src/com/android/incallui/InCallPresenter.java b/InCallUI/src/com/android/incallui/InCallPresenter.java
index 47d2d69..72a880a 100644
--- a/InCallUI/src/com/android/incallui/InCallPresenter.java
+++ b/InCallUI/src/com/android/incallui/InCallPresenter.java
@@ -102,6 +102,8 @@
 
         if (callList.getIncomingCall() != null) {
             newState = InCallState.INCOMING;
+        } else if (callList.getOutgoingCall() != null) {
+            newState = InCallState.OUTGOING;
         } else if (callList.getActiveCall() != null ||
                 callList.getBackgroundCall() != null) {
             newState = InCallState.INCALL;
@@ -182,7 +184,10 @@
         INCOMING,
 
         // In-call experience is showing
-        INCALL;
+        INCALL,
+
+        // User is dialing out
+        OUTGOING;
 
         public boolean isIncoming() {
             return (this == INCOMING);
@@ -191,6 +196,12 @@
         public boolean isHidden() {
             return (this == HIDDEN);
         }
+
+        public boolean isConnectingOrConnected() {
+            return (this == INCOMING ||
+                    this == OUTGOING ||
+                    this == INCALL);
+        }
     }
 
     /**
diff --git a/InCallUI/src/com/android/incallui/StatusBarNotifier.java b/InCallUI/src/com/android/incallui/StatusBarNotifier.java
index 617be2f..2324b57 100644
--- a/InCallUI/src/com/android/incallui/StatusBarNotifier.java
+++ b/InCallUI/src/com/android/incallui/StatusBarNotifier.java
@@ -141,7 +141,7 @@
         Logger.d(this, "updateInCallNotification(allowFullScreenIntent = "
                      + allowFullScreenIntent + ")...");
 
-        if (InCallState.INCALL != state && InCallState.INCOMING != state) {
+        if (!state.isConnectingOrConnected()) {
             cancelInCall();
             return;
         }
@@ -153,11 +153,12 @@
          * Set up the Intents that will get fires when the user interacts with the notificaiton.
          */
         builder.setContentIntent(inCallPendingIntent);
-        if (InCallState.INCOMING == state) {
-            if (allowFullScreenIntent) {
-                configureFullScreenIntent(builder, inCallPendingIntent);
-            }
-        } else if (InCallState.INCALL == state) {
+        if (allowFullScreenIntent) {
+            configureFullScreenIntent(builder, inCallPendingIntent);
+        }
+
+        // TODO(klp): Does this need to include OUTGOING state as well?
+        if (InCallState.INCALL == state) {
             addActiveCallIntents(builder);
         }
 
