diff --git a/InCallUI/src/com/android/incallui/ContactInfoCache.java b/InCallUI/src/com/android/incallui/ContactInfoCache.java
index 4b482cb..45a38c7 100644
--- a/InCallUI/src/com/android/incallui/ContactInfoCache.java
+++ b/InCallUI/src/com/android/incallui/ContactInfoCache.java
@@ -172,8 +172,8 @@
             if (!callerInfo.contactExists && cacheEntry.name == null &&
                     mPhoneNumberService != null) {
                 Log.d(TAG, "Contact lookup. Local contacts miss, checking remote");
-                mPhoneNumberService.getPhoneNumberInfo(cacheEntry.number,
-                        new PhoneNumberServiceListener(callId));
+                final PhoneNumberServiceListener listener = new PhoneNumberServiceListener(callId);
+                mPhoneNumberService.getPhoneNumberInfo(cacheEntry.number, listener, listener);
             } else if (cacheEntry.personUri != null) {
                 Log.d(TAG, "Contact lookup. Local contact found, starting image load");
                 // Load the image with a callback to update the image state.
@@ -244,14 +244,9 @@
             mInfoMap.put(mCallId, entry);
             sendInfoNotifications(mCallId, entry);
 
-            // If there's an associated image, fetch that
-            if (info.getImageUrl() != null) {
-                Log.d(TAG, "Contact lookup. Remote contact found, loading image.");
-                mPhoneNumberService.fetchImage(info.getNormalizedNumber(),
-                        info.getImageUrl(), this);
-            } else {
-                // Otherwise, we're done, so clear callbacks
-                Log.d(TAG, "Contact lookup. Remote contact found, no image.");
+            // If there is no image then we should not expect another callback.
+            if (info.getImageUrl() == null) {
+                // We're done, so clear callbacks
                 clearCallbacks(mCallId);
             }
         }
diff --git a/InCallUI/src/com/android/incallui/service/PhoneNumberService.java b/InCallUI/src/com/android/incallui/service/PhoneNumberService.java
index 24303cd..d5f809c 100644
--- a/InCallUI/src/com/android/incallui/service/PhoneNumberService.java
+++ b/InCallUI/src/com/android/incallui/service/PhoneNumberService.java
@@ -28,17 +28,10 @@
      *
      * @param phoneNumber The phone number to lookup.
      * @param listener The listener to notify when the phone number lookup is complete.
+     * @param imageListener The listener to notify when the image lookup is complete.
      */
-    public void getPhoneNumberInfo(String phoneNumber, NumberLookupListener listener);
-
-    /**
-     * Get an image asynchronously.
-     *
-     * @param number The phone number for the image.
-     * @param url The url to fetch the image from.
-     * @param listener The listener to notify when the image lookup is complete.
-     */
-    public void fetchImage(String number, String url, ImageLookupListener listener);
+    public void getPhoneNumberInfo(String phoneNumber, NumberLookupListener listener,
+            ImageLookupListener imageListener);
 
     public interface NumberLookupListener {
 
