diff --git a/InCallUI/res/values-ca/strings.xml b/InCallUI/res/values-ca/strings.xml
index 9d95426..02e1b8c 100644
--- a/InCallUI/res/values-ca/strings.xml
+++ b/InCallUI/res/values-ca/strings.xml
@@ -617,7 +617,7 @@
     <string name="ringtone_title" msgid="6374978286202084684">"To del telèfon"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibrar en sonar"</string>
     <string name="dtmf_tone_enable_title" msgid="827601042915852989">"Sonar en marcar els números"</string>
-    <string name="dial_pad_autocomplete" msgid="494525952035761075">"Compleció autom. del teclat"</string>
+    <string name="dial_pad_autocomplete" msgid="494525952035761075">"Autocompletar amb teclat"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"To i vibració"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Gestiona la trucada de conferència"</string>
 </resources>
diff --git a/InCallUI/res/values-cs/strings.xml b/InCallUI/res/values-cs/strings.xml
index 49ba0aa..85f4f42 100644
--- a/InCallUI/res/values-cs/strings.xml
+++ b/InCallUI/res/values-cs/strings.xml
@@ -617,7 +617,7 @@
     <string name="ringtone_title" msgid="6374978286202084684">"Vyzváněcí tón telefonu"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibrace při vyzvánění"</string>
     <string name="dtmf_tone_enable_title" msgid="827601042915852989">"Tóny při dotyku číselníku"</string>
-    <string name="dial_pad_autocomplete" msgid="494525952035761075">"Aut. doplň. pomocí číselníku"</string>
+    <string name="dial_pad_autocomplete" msgid="494525952035761075">"Autom. doplňování číselníku"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Vyzvánění a vibrace"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Spravovat konferenční hovor"</string>
 </resources>
diff --git a/InCallUI/res/values-hi/strings.xml b/InCallUI/res/values-hi/strings.xml
index 8019ab4..825c082 100644
--- a/InCallUI/res/values-hi/strings.xml
+++ b/InCallUI/res/values-hi/strings.xml
@@ -87,23 +87,23 @@
     <string name="sum_cw_disabled" msgid="3648693907300104575">"कॉल के दौरान, मुझे इनकमिंग कॉल की सूचना दें"</string>
     <string name="call_forwarding_settings" msgid="3378927671091537173">"कॉल अग्रेषण सेटिंग"</string>
     <string name="labelCF" msgid="2574386948026924737">"कॉल अग्रेषण"</string>
-    <string name="labelCFU" msgid="8147177368148660600">"हमेशा अग्रेषित करें"</string>
+    <string name="labelCFU" msgid="8147177368148660600">"हमेशा इसको भेजें"</string>
     <string name="messageCFU" msgid="3560082430662923687">"हमेशा इस नंबर का उपयोग करें"</string>
     <string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"सभी कॉल अग्रेषित कर रहा है"</string>
     <string name="sum_cfu_enabled" msgid="2450052502198827927">"सभी कॉल <xliff:g id="PHONENUMBER">{0}</xliff:g> को अग्रेषित किए जा रहे हैं"</string>
     <string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"नंबर अनुपलब्ध है"</string>
     <string name="sum_cfu_disabled" msgid="3698472522160364904">"अक्षम की गई"</string>
-    <string name="labelCFB" msgid="218938523102207587">"व्यस्त होने पर अग्रेषित करें"</string>
+    <string name="labelCFB" msgid="218938523102207587">"व्यस्त होने पर इसको भेजें"</string>
     <string name="messageCFB" msgid="3711089705936187129">"व्यस्त रहते समय नंबर"</string>
     <string name="sum_cfb_enabled" msgid="5984198104833116690">"<xliff:g id="PHONENUMBER">{0}</xliff:g> को अग्रेषित कर रहा है"</string>
     <string name="sum_cfb_disabled" msgid="227440009979537651">"अक्षम की गई"</string>
     <string name="disable_cfb_forbidden" msgid="3506984333877998061">"जब आपका फ़ोन व्यस्त हो, तो आपका ऑपरेटर कॉल अग्रेषण अक्षम करने का समर्थन नहीं करता."</string>
-    <string name="labelCFNRy" msgid="3646316323834351390">"अनुत्तरित होने पर अग्रेषित करें"</string>
+    <string name="labelCFNRy" msgid="3646316323834351390">"अनुत्तरित होने पर इसको भेजें"</string>
     <string name="messageCFNRy" msgid="672317899884380374">"अनुत्तरित होने पर नंबर"</string>
     <string name="sum_cfnry_enabled" msgid="6955775691317662910">"<xliff:g id="PHONENUMBER">{0}</xliff:g> को अग्रेषित कर रहा है"</string>
     <string name="sum_cfnry_disabled" msgid="8422350929957344729">"अक्षम की गई"</string>
     <string name="disable_cfnry_forbidden" msgid="4308233959150658058">"जब आपका फ़ोन उत्तर न दे, तो आपका ऑपरेटर कॉल अग्रेषण अक्षम करने का समर्थन नहीं करता."</string>
-    <string name="labelCFNRc" msgid="47183615370850000">"पहुंच योग्य न होने पर अग्रेषित करें"</string>
+    <string name="labelCFNRc" msgid="47183615370850000">"पहुंच योग्य न होने पर इसको भेजें"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"पहुंच योग्य न होने पर नंबर"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g> को अग्रेषित कर रहा है"</string>
     <string name="sum_cfnrc_disabled" msgid="7222141261321276464">"अक्षम की गई"</string>
diff --git a/InCallUI/res/values-pt/strings.xml b/InCallUI/res/values-pt/strings.xml
index 844d3cd..01e88c3 100644
--- a/InCallUI/res/values-pt/strings.xml
+++ b/InCallUI/res/values-pt/strings.xml
@@ -580,10 +580,10 @@
     <string name="sip_system_decide" msgid="368030746310423471">"Automático"</string>
     <string name="sip_always_send_keepalive" msgid="8192080724632877132">"Sempre enviar"</string>
     <string name="not_voice_capable" msgid="2739898841461577811">"Chamada de voz não compatível"</string>
-    <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Não posso falar agora. Me manda um SMS, por favor?"</string>
+    <string name="respond_via_sms_canned_response_1" msgid="2461606462788380215">"Não posso falar agora. Manda um SMS, por favor?"</string>
     <string name="respond_via_sms_canned_response_2" msgid="4074450431532859214">"Já te ligo de volta."</string>
     <string name="respond_via_sms_canned_response_3" msgid="3496079065723960450">"Eu te ligo mais tarde."</string>
-    <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Não posso falar agora. Me liga depois, por favor?"</string>
+    <string name="respond_via_sms_canned_response_4" msgid="1698989243040062190">"Não posso falar agora. Liga depois, por favor?"</string>
     <string name="respond_via_sms_custom_message" msgid="6158880869935281078">"Escreva sua resposta..."</string>
     <string name="respond_via_sms_setting_title" msgid="3754000371039709383">"Respostas rápidas"</string>
     <string name="respond_via_sms_setting_title_2" msgid="6104662227299493906">"Editar respostas rápidas"</string>
@@ -616,7 +616,7 @@
     <string name="default_notification_description" msgid="78174796906240970">"Som padrão (<xliff:g id="DEFAULT_SOUND_TITLE">%1$s</xliff:g>)"</string>
     <string name="ringtone_title" msgid="6374978286202084684">"Toque do telefone"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Vibrar quando estiver tocando"</string>
-    <string name="dtmf_tone_enable_title" msgid="827601042915852989">"Tons de toque do teclado numérico"</string>
+    <string name="dtmf_tone_enable_title" msgid="827601042915852989">"Tons de toque teclado numérico"</string>
     <string name="dial_pad_autocomplete" msgid="494525952035761075">"Autopreenchimento do teclado"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Toque e vibração"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Gerenciar conferência telefônica"</string>
diff --git a/InCallUI/res/values-sw/strings.xml b/InCallUI/res/values-sw/strings.xml
index 661e310..51c8add 100644
--- a/InCallUI/res/values-sw/strings.xml
+++ b/InCallUI/res/values-sw/strings.xml
@@ -617,7 +617,7 @@
     <string name="ringtone_title" msgid="6374978286202084684">"Mlio wa simu"</string>
     <string name="vibrate_on_ring_title" msgid="9197564612065258960">"Tetema wakati wa kuita"</string>
     <string name="dtmf_tone_enable_title" msgid="827601042915852989">"Toa sauti vitufe vya kupiga vinapoguswa"</string>
-    <string name="dial_pad_autocomplete" msgid="494525952035761075">"Jaza kitufe cha kupiga kiotomatiki"</string>
+    <string name="dial_pad_autocomplete" msgid="494525952035761075">"Jaza nambari kiotomatiki"</string>
     <string name="preference_category_ringtone" msgid="5197960752529332721">"Malio wa simu na Mtetemo"</string>
     <string name="manageConferenceLabel" msgid="4691922394301969053">"Dhibiti simu ya kongamano"</string>
 </resources>
diff --git a/InCallUI/src/com/android/incallui/AnimationUtils.java b/InCallUI/src/com/android/incallui/AnimationUtils.java
index aef3cdf..d214c85 100644
--- a/InCallUI/src/com/android/incallui/AnimationUtils.java
+++ b/InCallUI/src/com/android/incallui/AnimationUtils.java
@@ -209,11 +209,14 @@
             final ImageView imageView, final Drawable from, final Drawable to) {
         // We skip the cross-fade when those two Drawables are equal, or they are BitmapDrawables
         // pointing to the same Bitmap.
-        final boolean areSameImage = from.equals(to) ||
-                ((from instanceof BitmapDrawable)
-                        && (to instanceof BitmapDrawable)
-                        && ((BitmapDrawable) from).getBitmap()
-                                .equals(((BitmapDrawable) to).getBitmap()));
+        final boolean drawableIsEqual = (from != null && to != null && from.equals(to));
+        final boolean hasFromImage = ((from instanceof BitmapDrawable) &&
+                ((BitmapDrawable) from).getBitmap() != null);
+        final boolean hasToImage = ((to instanceof BitmapDrawable) &&
+                ((BitmapDrawable) to).getBitmap() != null);
+        final boolean areSameImage = drawableIsEqual || (hasFromImage && hasToImage &&
+                ((BitmapDrawable) from).getBitmap().equals(((BitmapDrawable) to).getBitmap()));
+
         if (!areSameImage) {
             if (FADE_DBG) {
                 log("Start cross-fade animation for " + imageView
@@ -263,6 +266,9 @@
             imageView.setImageDrawable(transitionDrawable);
             transitionDrawable.startTransition(ANIMATION_DURATION); */
             imageView.setTag(to);
+        } else if (!hasFromImage && hasToImage) {
+            imageView.setImageDrawable(to);
+            imageView.setTag(to);
         } else {
             if (FADE_DBG) {
                 log("*Not* start cross-fade. " + imageView);
diff --git a/InCallUI/src/com/android/incallui/AnswerPresenter.java b/InCallUI/src/com/android/incallui/AnswerPresenter.java
index e8bcc99..e820929 100644
--- a/InCallUI/src/com/android/incallui/AnswerPresenter.java
+++ b/InCallUI/src/com/android/incallui/AnswerPresenter.java
@@ -56,7 +56,6 @@
         if (mCallId != Call.INVALID_CALL_ID) {
             CallList.getInstance().removeCallUpdateListener(mCallId, this);
         }
-
     }
 
     @Override
diff --git a/InCallUI/src/com/android/incallui/CallButtonPresenter.java b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
index b2884e6..ec8e844 100644
--- a/InCallUI/src/com/android/incallui/CallButtonPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
@@ -50,13 +50,12 @@
 
     @Override
     public void onUiUnready(CallButtonUi ui) {
+        super.onUiUnready(ui);
+
         InCallPresenter.getInstance().removeListener(this);
         AudioModeProvider.getInstance().removeListener(this);
 
         mProximitySensor = null;
-
-        // set Ui to null, so should go last
-        super.onUiUnready(ui);
     }
 
     @Override
@@ -195,13 +194,13 @@
         }
 
         final boolean isVisible = state.isConnectingOrConnected() &&
-                !state.isIncoming();
+                !state.isIncoming() && call != null;
 
         ui.setVisible(isVisible);
 
         Log.d(this, "Updating call UI for call: ", call);
 
-        if (isVisible && call != null) {
+        if (isVisible) {
             Log.v(this, "Show hold ", call.can(Capabilities.HOLD));
             Log.v(this, "Show merge ", call.can(Capabilities.MERGE_CALLS));
             Log.v(this, "Show swap ", call.can(Capabilities.SWAP_CALLS));
diff --git a/InCallUI/src/com/android/incallui/CallCardPresenter.java b/InCallUI/src/com/android/incallui/CallCardPresenter.java
index 07978ff..6c8056b 100644
--- a/InCallUI/src/com/android/incallui/CallCardPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallCardPresenter.java
@@ -253,9 +253,12 @@
                     // because the contactinfocache pre-massages the data into the ui fields.
                     // Need to do massaging outside of contactinfocache.
                     if (entry.label == null) {
-                        // Name not found.  Try lookup.
-                        Log.d(TAG, "Contact lookup. Contact provider miss. Searching people api.");
-                        lookupPhoneNumber(identification.getNumber(), isPrimary, isConference);
+                        if (identification.getNumberPresentation() == Call.PRESENTATION_ALLOWED) {
+                            // Name not found.  Try lookup.
+                            Log.d(TAG, "Contact lookup. Contact provider miss. Searching people "
+                                    + "api.");
+                            lookupPhoneNumber(identification.getNumber(), isPrimary, isConference);
+                        }
                     } else {
                         Log.d(TAG, "Contact lookup. Found in contact provider: " + entry);
                         updateContactEntry(entry, isPrimary, isConference);
diff --git a/InCallUI/src/com/android/incallui/ConferenceManagerPresenter.java b/InCallUI/src/com/android/incallui/ConferenceManagerPresenter.java
index ccda4a5..041614d 100644
--- a/InCallUI/src/com/android/incallui/ConferenceManagerPresenter.java
+++ b/InCallUI/src/com/android/incallui/ConferenceManagerPresenter.java
@@ -39,8 +39,24 @@
     private Context mContext;
 
     @Override
+    public void onUiReady(ConferenceManagerUi ui) {
+        super.onUiReady(ui);
+
+        // register for call state changes last
+        InCallPresenter.getInstance().addListener(this);
+    }
+
+    @Override
+    public void onUiUnready(ConferenceManagerUi ui) {
+        super.onUiUnready(ui);
+
+        InCallPresenter.getInstance().removeListener(this);
+    }
+
+    @Override
     public void onStateChange(InCallState state, CallList callList) {
         if (getUi().isFragmentVisible()) {
+            Log.v(this, "onStateChange" + state);
             if (state == InCallState.INCALL && callList.getActiveOrBackgroundCall() != null &&
                     callList.getActiveOrBackgroundCall().isConferenceCall()) {
                 Log.v(this, "Number of existing calls is " +
diff --git a/InCallUI/src/com/android/incallui/InCallActivity.java b/InCallUI/src/com/android/incallui/InCallActivity.java
index 38e2a48..7d7ca4b 100644
--- a/InCallUI/src/com/android/incallui/InCallActivity.java
+++ b/InCallUI/src/com/android/incallui/InCallActivity.java
@@ -273,6 +273,7 @@
         if (mCallButtonFragment == null) {
             mCallButtonFragment = (CallButtonFragment) getFragmentManager()
                     .findFragmentById(R.id.callButtonFragment);
+            mCallButtonFragment.getView().setVisibility(View.INVISIBLE);
         }
 
         if (mCallCardFragment == null) {
diff --git a/InCallUI/src/com/android/incallui/StatusBarNotifier.java b/InCallUI/src/com/android/incallui/StatusBarNotifier.java
index c5b60fe..ad1a67e 100644
--- a/InCallUI/src/com/android/incallui/StatusBarNotifier.java
+++ b/InCallUI/src/com/android/incallui/StatusBarNotifier.java
@@ -25,6 +25,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
 import android.text.TextUtils;
@@ -215,10 +216,11 @@
     private void buildAndSendNotification(InCallState state, Call call,
             ContactCacheEntry contactInfo, boolean allowFullScreenIntent) {
 
+        final boolean isConference = call.isConferenceCall();
         final int iconResId = getIconToDisplay(call);
-        final Bitmap largeIcon = getLargeIconToDisplay(contactInfo);
+        final Bitmap largeIcon = getLargeIconToDisplay(contactInfo, isConference);
         final int contentResId = getContentString(call);
-        final String contentTitle = getContentTitle(contactInfo);
+        final String contentTitle = getContentTitle(contactInfo, isConference);
 
         // If we checked and found that nothing is different, dont issue another notification.
         if (!checkForChangeAndSaveData(iconResId, contentResId, largeIcon, contentTitle, state,
@@ -316,7 +318,10 @@
     /**
      * Returns the main string to use in the notification.
      */
-    private String getContentTitle(ContactCacheEntry contactInfo) {
+    private String getContentTitle(ContactCacheEntry contactInfo, boolean isConference) {
+        if (isConference) {
+            return mContext.getResources().getString(R.string.card_title_conf_call);
+        }
         if (TextUtils.isEmpty(contactInfo.name)) {
             return contactInfo.number;
         }
@@ -327,7 +332,11 @@
     /**
      * Gets a large icon from the contact info object to display in the notification.
      */
-    private Bitmap getLargeIconToDisplay(ContactCacheEntry contactInfo) {
+    private Bitmap getLargeIconToDisplay(ContactCacheEntry contactInfo, boolean isConference) {
+        if (isConference) {
+            return BitmapFactory.decodeResource(mContext.getResources(),
+                    R.drawable.picture_conference);
+        }
         if (contactInfo.photo != null && (contactInfo.photo instanceof BitmapDrawable)) {
             return ((BitmapDrawable) contactInfo.photo).getBitmap();
         }
