diff --git a/src/com/android/incallui/AnswerPresenter.java b/src/com/android/incallui/AnswerPresenter.java
index ecaa5cc..d6f87c7 100644
--- a/src/com/android/incallui/AnswerPresenter.java
+++ b/src/com/android/incallui/AnswerPresenter.java
@@ -37,7 +37,7 @@
 
     public void onAnswer() {
         // TODO(klp): hook in call id.
-        CallCommandService.getInstance().answerCall(1);
+        CallCommandClient.getInstance().answerCall(1);
         notifyListeners();
     }
 
diff --git a/src/com/android/incallui/CallButtonPresenter.java b/src/com/android/incallui/CallButtonPresenter.java
index f1e83e2..db727f3 100644
--- a/src/com/android/incallui/CallButtonPresenter.java
+++ b/src/com/android/incallui/CallButtonPresenter.java
@@ -41,12 +41,12 @@
     }
 
     public void muteClicked(boolean checked) {
-        CallCommandService.getInstance().mute(checked);
+        CallCommandClient.getInstance().mute(checked);
         getUi().setMute(checked);
     }
 
     public void speakerClicked(boolean checked) {
-        CallCommandService.getInstance().turnSpeakerOn(checked);
+        CallCommandClient.getInstance().turnSpeakerOn(checked);
         getUi().setSpeaker(checked);
     }
 
diff --git a/src/com/android/incallui/CallCommandService.java b/src/com/android/incallui/CallCommandClient.java
similarity index 81%
rename from src/com/android/incallui/CallCommandService.java
rename to src/com/android/incallui/CallCommandClient.java
index 7b36b76..5868fb8 100644
--- a/src/com/android/incallui/CallCommandService.java
+++ b/src/com/android/incallui/CallCommandClient.java
@@ -25,15 +25,15 @@
 /**
  * Main interface for phone related commands.
  */
-public class CallCommandService {
+public class CallCommandClient {
 
-    private static final String TAG = CallCommandService.class.getSimpleName();
+    private static final String TAG = CallCommandClient.class.getSimpleName();
 
-    private static CallCommandService sInstance;
+    private static CallCommandClient sInstance;
 
-    public static CallCommandService getInstance() {
+    public static CallCommandClient getInstance() {
         if (sInstance == null) {
-            throw new IllegalStateException("CallCommandService has not been initialized.");
+            throw new IllegalStateException("CallCommandClient has not been initialized.");
         }
         return sInstance;
     }
@@ -41,13 +41,13 @@
     // TODO(klp): Not sure if static call is ok. Might need to switch to normal service binding.
     public static void init(ICallCommandService service) {
         Preconditions.checkState(sInstance == null);
-        sInstance = new CallCommandService(service);
+        sInstance = new CallCommandClient(service);
     }
 
 
     private ICallCommandService mCommandService;
 
-    private CallCommandService(ICallCommandService service) {
+    private CallCommandClient(ICallCommandService service) {
         mCommandService = service;
     }
 
diff --git a/src/com/android/incallui/CallHandlerService.java b/src/com/android/incallui/CallHandlerService.java
index dac6563..5ede848 100644
--- a/src/com/android/incallui/CallHandlerService.java
+++ b/src/com/android/incallui/CallHandlerService.java
@@ -51,7 +51,7 @@
         @Override
         public void setCallCommandService(ICallCommandService service) {
             logD("onConnected: " + service.toString());
-            CallCommandService.init(service);
+            CallCommandClient.init(service);
         }
 
         @Override
