diff --git a/src/com/android/telecomm/TelecommServiceImpl.java b/src/com/android/telecomm/TelecommServiceImpl.java
index 9793fda..bf25432 100644
--- a/src/com/android/telecomm/TelecommServiceImpl.java
+++ b/src/com/android/telecomm/TelecommServiceImpl.java
@@ -64,6 +64,11 @@
         }
     };
 
+    /** Private constructor; @see init() */
+    private TelecommServiceImpl() {
+        publish();
+    }
+
     /**
      * Initialize the singleton TelecommServiceImpl instance.
      * This is only done once, at startup, from TelecommApp.onCreate().
@@ -79,21 +84,28 @@
         }
     }
 
-    /** Private constructor; @see init() */
-    private TelecommServiceImpl() {
-        publish();
-    }
-
-    private void publish() {
-        Log.d(this, "publish: %s", this);
-        ServiceManager.addService(SERVICE_NAME, this);
-    }
-
     //
     // Implementation of the ITelephony interface.
     //
 
     @Override
+    public List<Subscription> getSubscriptions() {
+        return sSubscriptions;
+    }
+
+    @Override
+    public void setEnabled(Subscription subscription, boolean enabled) {
+        // Enforce MODIFY_PHONE_STATE ?
+        // TODO
+    }
+
+    @Override
+    public void setSystemDefault(Subscription subscription) {
+        // Enforce MODIFY_PHONE_STATE ?
+        // TODO
+    }
+
+    @Override
     public void silenceRinger() {
         Log.d(this, "silenceRinger");
         // TODO: find a more appropriate permission to check here.
@@ -101,6 +113,18 @@
         mHandler.sendEmptyMessage(MSG_SILENCE_RINGER);
     }
 
+    @Override
+    public ComponentName getDefaultPhoneApp() {
+        Resources resources = TelecommApp.getInstance().getResources();
+        return new ComponentName(
+                resources.getString(R.string.ui_default_package),
+                resources.getString(R.string.dialer_default_class));
+    }
+
+    //
+    // Supporting methods for the ITelephony interface implementation.
+    //
+
     /**
      * Internal implemenation of silenceRinger().
      * This should only be called from the main thread of the Phone app.
@@ -174,22 +198,8 @@
                     false)
     );
 
-
-
-    @Override
-    public List<Subscription> getSubscriptions() {
-        return sSubscriptions;
-    }
-
-    @Override
-    public void setEnabled(Subscription subscription, boolean enabled) {
-        // Enforce MODIFY_PHONE_STATE ?
-        // TODO
-    }
-
-    @Override
-    public void setSystemDefault(Subscription subscription) {
-        // Enforce MODIFY_PHONE_STATE ?
-        // TODO
+    private void publish() {
+        Log.d(this, "publish: %s", this);
+        ServiceManager.addService(SERVICE_NAME, this);
     }
 }
