diff --git a/src/com/android/phone/CallFeaturesSetting.java b/src/com/android/phone/CallFeaturesSetting.java
index d6a2a66..b21db91 100644
--- a/src/com/android/phone/CallFeaturesSetting.java
+++ b/src/com/android/phone/CallFeaturesSetting.java
@@ -56,7 +56,6 @@
 import android.provider.ContactsContract.CommonDataKinds;
 import android.provider.MediaStore;
 import android.provider.Settings;
-import android.telecomm.TelecommConstants;
 import android.telecomm.TelecommManager;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
@@ -1830,7 +1829,7 @@
         if (mButtonTTY != null) {
             int settingsTtyMode = Settings.Secure.getInt(getContentResolver(),
                     Settings.Secure.PREFERRED_TTY_MODE,
-                    TelecommConstants.TTY_MODE_OFF);
+                    TelecommManager.TTY_MODE_OFF);
             mButtonTTY.setValue(Integer.toString(settingsTtyMode));
             updatePreferredTtyModeSummary(settingsTtyMode);
         }
@@ -1897,27 +1896,27 @@
         int settingsTtyMode = android.provider.Settings.Secure.getInt(
                 getContentResolver(),
                 android.provider.Settings.Secure.PREFERRED_TTY_MODE,
-                TelecommConstants.TTY_MODE_OFF);
+                TelecommManager.TTY_MODE_OFF);
         if (DBG) log("handleTTYChange: requesting set TTY mode enable (TTY) to" +
                 Integer.toString(buttonTtyMode));
 
         if (buttonTtyMode != settingsTtyMode) {
             switch(buttonTtyMode) {
-            case TelecommConstants.TTY_MODE_OFF:
-            case TelecommConstants.TTY_MODE_FULL:
-            case TelecommConstants.TTY_MODE_HCO:
-            case TelecommConstants.TTY_MODE_VCO:
+            case TTY_MODE_OFF:
+            case TTY_MODE_FULL:
+            case TTY_MODE_HCO:
+            case TTY_MODE_VCO:
                 android.provider.Settings.Secure.putInt(getContentResolver(),
                         android.provider.Settings.Secure.PREFERRED_TTY_MODE, buttonTtyMode);
                 break;
             default:
-                buttonTtyMode = TelecommConstants.TTY_MODE_OFF;
+                buttonTtyMode = TelecommManager.TTY_MODE_OFF;
             }
 
             mButtonTTY.setValue(Integer.toString(buttonTtyMode));
             updatePreferredTtyModeSummary(buttonTtyMode);
-            Intent ttyModeChanged = new Intent(TelecommConstants.ACTION_TTY_PREFERRED_MODE_CHANGED);
-            ttyModeChanged.putExtra(TelecommConstants.EXTRA_TTY_PREFERRED_MODE, buttonTtyMode);
+            Intent ttyModeChanged = new Intent(TelecommManager.ACTION_TTY_PREFERRED_MODE_CHANGED);
+            ttyModeChanged.putExtra(TelecommManager.EXTRA_TTY_PREFERRED_MODE, buttonTtyMode);
             sendBroadcastAsUser(ttyModeChanged, UserHandle.ALL);
         }
     }
@@ -1942,15 +1941,15 @@
     private void updatePreferredTtyModeSummary(int TtyMode) {
         String [] txts = getResources().getStringArray(R.array.tty_mode_entries);
         switch(TtyMode) {
-            case TelecommConstants.TTY_MODE_OFF:
-            case TelecommConstants.TTY_MODE_HCO:
-            case TelecommConstants.TTY_MODE_VCO:
-            case TelecommConstants.TTY_MODE_FULL:
+            case TTY_MODE_OFF:
+            case TTY_MODE_HCO:
+            case TTY_MODE_VCO:
+            case TTY_MODE_FULL:
                 mButtonTTY.setSummary(txts[TtyMode]);
                 break;
             default:
                 mButtonTTY.setEnabled(false);
-                mButtonTTY.setSummary(txts[TelecommConstants.TTY_MODE_OFF]);
+                mButtonTTY.setSummary(txts[TelecommManager.TTY_MODE_OFF]);
                 break;
         }
     }
@@ -2258,7 +2257,7 @@
     }
 
     private void loadConnectionServiceEntries() {
-        Intent intent = new Intent(TelecommConstants.ACTION_CONNECTION_SERVICE);
+        Intent intent = new Intent(TelecommManager.ACTION_CONNECTION_SERVICE);
         for (ResolveInfo entry : getPackageManager().queryIntentServices(intent, 0)) {
             ServiceInfo serviceInfo = entry.serviceInfo;
             if (serviceInfo != null) {
diff --git a/src/com/android/services/telephony/PstnIncomingCallNotifier.java b/src/com/android/services/telephony/PstnIncomingCallNotifier.java
index b24758f..a1461df 100644
--- a/src/com/android/services/telephony/PstnIncomingCallNotifier.java
+++ b/src/com/android/services/telephony/PstnIncomingCallNotifier.java
@@ -18,7 +18,6 @@
 
 import android.content.BroadcastReceiver;
 
-import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
@@ -26,9 +25,8 @@
 import android.os.Handler;
 import android.os.Message;
 import android.os.UserHandle;
-import android.telecomm.PhoneAccount;
-import android.telecomm.TelecommConstants;
 
+import android.telecomm.TelecommManager;
 import com.android.internal.telephony.Call;
 import com.android.internal.telephony.Connection;
 import com.android.internal.telephony.Phone;
@@ -156,9 +154,9 @@
     private void sendIncomingCallIntent(Connection connection) {
         Context context = mPhoneProxy.getContext();
 
-        Intent intent = new Intent(TelecommConstants.ACTION_INCOMING_CALL);
+        Intent intent = new Intent(TelecommManager.ACTION_INCOMING_CALL);
         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        intent.putExtra(TelecommConstants.EXTRA_PHONE_ACCOUNT,
+        intent.putExtra(TelecommManager.EXTRA_PHONE_ACCOUNT,
                 TelecommAccountRegistry.makePstnPhoneAccount(mPhoneProxy));
 
         Log.d(this, "Sending incoming call intent: %s", intent);
diff --git a/src/com/android/services/telephony/TtyManager.java b/src/com/android/services/telephony/TtyManager.java
index a58ea2b..e714bb3 100644
--- a/src/com/android/services/telephony/TtyManager.java
+++ b/src/com/android/services/telephony/TtyManager.java
@@ -23,7 +23,6 @@
 import android.os.AsyncResult;
 import android.os.Handler;
 import android.os.Message;
-import android.telecomm.TelecommConstants;
 import android.telecomm.TelecommManager;
 
 import com.android.internal.telephony.Phone;
@@ -73,10 +72,10 @@
         mPhone = phone;
 
         IntentFilter intentFilter = new IntentFilter(
-                TelecommConstants.ACTION_CURRENT_TTY_MODE_CHANGED);
+                TelecommManager.ACTION_CURRENT_TTY_MODE_CHANGED);
         context.registerReceiver(mReceiver, intentFilter);
 
-        int ttyMode = TelecommConstants.TTY_MODE_OFF;
+        int ttyMode = TelecommManager.TTY_MODE_OFF;
         TelecommManager telecommManager = TelecommManager.from(context);
         if (telecommManager != null) {
             ttyMode = telecommManager.getCurrentTtyMode();
@@ -96,9 +95,9 @@
         public void onReceive(Context context, Intent intent) {
             String action = intent.getAction();
             Log.v(TtyManager.this, "onReceive, action: %s", action);
-            if (action.equals(TelecommConstants.ACTION_CURRENT_TTY_MODE_CHANGED)) {
+            if (action.equals(TelecommManager.ACTION_CURRENT_TTY_MODE_CHANGED)) {
                 int ttyMode = intent.getIntExtra(
-                        TelecommConstants.EXTRA_CURRENT_TTY_MODE, TelecommConstants.TTY_MODE_OFF);
+                        TelecommManager.EXTRA_CURRENT_TTY_MODE, TelecommManager.TTY_MODE_OFF);
                 updateTtyMode(ttyMode);
             }
         }
@@ -106,13 +105,13 @@
 
     private static int telecommModeToPhoneMode(int telecommMode) {
         switch (telecommMode) {
-            case TelecommConstants.TTY_MODE_FULL:
+            case TTY_MODE_FULL:
                 return Phone.TTY_MODE_FULL;
-            case TelecommConstants.TTY_MODE_VCO:
+            case TTY_MODE_VCO:
                 return Phone.TTY_MODE_VCO;
-            case TelecommConstants.TTY_MODE_HCO:
+            case TTY_MODE_HCO:
                 return Phone.TTY_MODE_HCO;
-            case TelecommConstants.TTY_MODE_OFF:
+            case TTY_MODE_OFF:
             default:
                 return Phone.TTY_MODE_OFF;
         }
@@ -121,14 +120,14 @@
     private static int phoneModeToTelecommMode(int phoneMode) {
         switch (phoneMode) {
             case Phone.TTY_MODE_FULL:
-                return TelecommConstants.TTY_MODE_FULL;
+                return TelecommManager.TTY_MODE_FULL;
             case Phone.TTY_MODE_VCO:
-                return TelecommConstants.TTY_MODE_VCO;
+                return TelecommManager.TTY_MODE_VCO;
             case Phone.TTY_MODE_HCO:
-                return TelecommConstants.TTY_MODE_HCO;
+                return TelecommManager.TTY_MODE_HCO;
             case Phone.TTY_MODE_OFF:
             default:
-                return TelecommConstants.TTY_MODE_OFF;
+                return TelecommManager.TTY_MODE_OFF;
         }
     }
 }
