diff --git a/src/com/android/telecomm/Call.java b/src/com/android/telecomm/Call.java
index 5785ee7..f5229cc 100644
--- a/src/com/android/telecomm/Call.java
+++ b/src/com/android/telecomm/Call.java
@@ -67,7 +67,7 @@
         void onFailedIncomingCall(Call call);
         void onRequestingRingback(Call call, boolean requestingRingback);
         void onPostDialWait(Call call, String remaining);
-        void onIsConferenceCapableChanged(Call call, boolean isConferenceCapable);
+        void onCallCapabilitiesChanged(Call call);
         void onExpiredConferenceCall(Call call);
         void onConfirmedConferenceCall(Call call);
         void onParentChanged(Call call);
@@ -96,7 +96,7 @@
         @Override
         public void onPostDialWait(Call call, String remaining) {}
         @Override
-        public void onIsConferenceCapableChanged(Call call, boolean isConferenceCapable) {}
+        public void onCallCapabilitiesChanged(Call call) {}
         @Override
         public void onExpiredConferenceCall(Call call) {}
         @Override
@@ -216,7 +216,7 @@
     /** Whether direct-to-voicemail query is pending. */
     private boolean mDirectToVoicemailQueryPending;
 
-    private boolean mIsConferenceCapable = false;
+    private int mCallCapabilities;
 
     private boolean mIsConference = false;
 
@@ -419,15 +419,15 @@
         mConnectTimeMillis = connectTimeMillis;
     }
 
-    boolean isConferenceCapable() {
-        return mIsConferenceCapable;
+    int getCallCapabilities() {
+        return mCallCapabilities;
     }
 
-    void setIsConferenceCapable(boolean isConferenceCapable) {
-        if (mIsConferenceCapable != isConferenceCapable) {
-            mIsConferenceCapable = isConferenceCapable;
+    void setCallCapabilities(int callCapabilities) {
+        if (mCallCapabilities != callCapabilities) {
+            mCallCapabilities = callCapabilities;
             for (Listener l : mListeners) {
-                l.onIsConferenceCapableChanged(this, mIsConferenceCapable);
+                l.onCallCapabilitiesChanged(this);
             }
         }
     }
diff --git a/src/com/android/telecomm/CallsManager.java b/src/com/android/telecomm/CallsManager.java
index ec23222..3811de1 100644
--- a/src/com/android/telecomm/CallsManager.java
+++ b/src/com/android/telecomm/CallsManager.java
@@ -57,7 +57,7 @@
         void onForegroundCallChanged(Call oldForegroundCall, Call newForegroundCall);
         void onAudioStateChanged(CallAudioState oldAudioState, CallAudioState newAudioState);
         void onRequestingRingback(Call call, boolean ringback);
-        void onIsConferenceCapableChanged(Call call, boolean isConferenceCapable);
+        void onCallCapabilitiesChanged(Call call);
         void onIsConferencedChanged(Call call);
         void onCannedSmsResponsesLoaded(Call call);
         void onCallVideoProviderChanged(Call call);
@@ -161,9 +161,9 @@
     }
 
     @Override
-    public void onIsConferenceCapableChanged(Call call, boolean isConferenceCapable) {
+    public void onCallCapabilitiesChanged(Call call) {
         for (CallsManagerListener listener : mListeners) {
-            listener.onIsConferenceCapableChanged(call, isConferenceCapable);
+            listener.onCallCapabilitiesChanged(call);
         }
     }
 
diff --git a/src/com/android/telecomm/CallsManagerListenerBase.java b/src/com/android/telecomm/CallsManagerListenerBase.java
index 77dc7b6..8073042 100644
--- a/src/com/android/telecomm/CallsManagerListenerBase.java
+++ b/src/com/android/telecomm/CallsManagerListenerBase.java
@@ -66,7 +66,7 @@
     }
 
     @Override
-    public void onIsConferenceCapableChanged(Call call, boolean isConferenceCapable) {
+    public void onCallCapabilitiesChanged(Call call) {
     }
 
     @Override
diff --git a/src/com/android/telecomm/ConnectionServiceWrapper.java b/src/com/android/telecomm/ConnectionServiceWrapper.java
index e355890..b2dd085 100644
--- a/src/com/android/telecomm/ConnectionServiceWrapper.java
+++ b/src/com/android/telecomm/ConnectionServiceWrapper.java
@@ -68,7 +68,7 @@
     private static final int MSG_SET_DISCONNECTED = 8;
     private static final int MSG_SET_ON_HOLD = 9;
     private static final int MSG_SET_REQUESTING_RINGBACK = 10;
-    private static final int MSG_CAN_CONFERENCE = 11;
+    private static final int MSG_SET_CALL_CAPABILITIES = 11;
     private static final int MSG_SET_IS_CONFERENCED = 12;
     private static final int MSG_ADD_CONFERENCE_CALL = 13;
     private static final int MSG_REMOVE_CALL = 14;
@@ -205,13 +205,13 @@
                     }
                     break;
                 }
-                case MSG_CAN_CONFERENCE: {
+                case MSG_SET_CALL_CAPABILITIES: {
                     call = mCallIdMapper.getCall(msg.obj);
                     if (call != null) {
-                        call.setIsConferenceCapable(msg.arg1 == 1);
+                        call.setCallCapabilities(msg.arg1);
                     } else {
                         //Log.w(ConnectionServiceWrapper.this,
-                        //      "canConference, unknown call id: %s", msg.obj);
+                        //      "setCallCapabilities, unknown call id: %s", msg.obj);
                     }
                     break;
                 }
@@ -287,28 +287,16 @@
                     break;
                 }
                 case MSG_SET_FEATURES: {
-                    SomeArgs args = (SomeArgs) msg.obj;
-                    try {
-                        call = mCallIdMapper.getCall(args.arg1);
-                        int features = (int) args.argi1;
-                        if (call != null) {
-                            call.setFeatures(features);
-                        }
-                    } finally {
-                        args.recycle();
+                    call = mCallIdMapper.getCall(msg.obj);
+                    if (call != null) {
+                        call.setFeatures(msg.arg1);
                     }
                     break;
                 }
                 case MSG_SET_AUDIO_MODE_IS_VOIP: {
-                    SomeArgs args = (SomeArgs) msg.obj;
-                    try {
-                        call = mCallIdMapper.getCall(args.arg1);
-                        boolean isVoip = args.argi1 == 1;
-                        if (call != null) {
-                            call.setAudioModeIsVoip(isVoip);
-                        }
-                    } finally {
-                        args.recycle();
+                    call = mCallIdMapper.getCall(msg.obj);
+                    if (call != null) {
+                        call.setAudioModeIsVoip(msg.arg1 == 1);
                     }
                     break;
                 }
@@ -444,9 +432,9 @@
 
         /** ${inheritDoc} */
         @Override
-        public void setCanConference(String callId, boolean canConference) {
-            logIncoming("setCanConference %s %b", callId, canConference);
-            mHandler.obtainMessage(MSG_CAN_CONFERENCE, canConference ? 1 : 0, 0, callId)
+        public void setCallCapabilities(String callId, int callCapabilities) {
+            logIncoming("setCallCapabilities %s %d", callId, callCapabilities);
+            mHandler.obtainMessage(MSG_SET_CALL_CAPABILITIES, callCapabilities, 0, callId)
                     .sendToTarget();
         }
 
@@ -489,20 +477,15 @@
         public void setFeatures(String callId, int features) {
             logIncoming("setFeatures %s %d", callId, features);
             mCallIdMapper.checkValidCallId(callId);
-            SomeArgs args = SomeArgs.obtain();
-            args.arg1 = callId;
-            args.argi1 = features;
-            mHandler.obtainMessage(MSG_SET_FEATURES, args).sendToTarget();
+            mHandler.obtainMessage(MSG_SET_FEATURES, features, 0, callId).sendToTarget();
         }
 
         @Override
         public void setAudioModeIsVoip(String callId, boolean isVoip) {
             logIncoming("setAudioModeIsVoip %s %d", callId, isVoip);
             mCallIdMapper.checkValidCallId(callId);
-            SomeArgs args = SomeArgs.obtain();
-            args.arg1 = callId;
-            args.argi1 = isVoip ? 1 : 0;
-            mHandler.obtainMessage(MSG_SET_AUDIO_MODE_IS_VOIP, args).sendToTarget();
+            mHandler.obtainMessage(MSG_SET_AUDIO_MODE_IS_VOIP, isVoip ? 1 : 0, 0,
+                    callId).sendToTarget();
         }
 
         @Override
diff --git a/src/com/android/telecomm/InCallController.java b/src/com/android/telecomm/InCallController.java
index 42d6a03..94f5b6e 100644
--- a/src/com/android/telecomm/InCallController.java
+++ b/src/com/android/telecomm/InCallController.java
@@ -133,7 +133,7 @@
     }
 
     @Override
-    public void onIsConferenceCapableChanged(Call call, boolean isConferenceCapable) {
+    public void onCallCapabilitiesChanged(Call call) {
         updateCall(call);
     }
 
@@ -269,13 +269,14 @@
         CallServiceDescriptor descriptor = call.getConnectionService() != null ?
                 call.getConnectionService().getDescriptor() : null;
 
-        int capabilities = CallCapabilities.HOLD | CallCapabilities.MUTE;
-        if (CallsManager.getInstance().isAddCallCapable(call)) {
-            capabilities |= CallCapabilities.ADD_CALL;
+        int capabilities = call.getCallCapabilities();
+        if (!CallsManager.getInstance().isAddCallCapable(call)) {
+            capabilities &= ~CallCapabilities.ADD_CALL;
         }
-        if (call.isConferenceCapable()) {
-            capabilities |= CallCapabilities.MERGE_CALLS;
+        if (call.isEmergencyCall()) {
+            capabilities &= ~CallCapabilities.MUTE;
         }
+
         CallState state = call.getState();
         if (state == CallState.ABORTED) {
             state = CallState.DISCONNECTED;
