diff --git a/java/com/android/dialer/precall/impl/CallingAccountSelector.java b/java/com/android/dialer/precall/impl/CallingAccountSelector.java
index 8d7d759..f014b27 100644
--- a/java/com/android/dialer/precall/impl/CallingAccountSelector.java
+++ b/java/com/android/dialer/precall/impl/CallingAccountSelector.java
@@ -38,7 +38,6 @@
 import android.support.annotation.Nullable;
 import android.support.annotation.VisibleForTesting;
 import android.support.annotation.WorkerThread;
-import android.support.v4.util.ArraySet;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
@@ -67,7 +66,6 @@
 import com.google.common.collect.ImmutableSet;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Set;
 
 /** PreCallAction to select which phone account to call with. Ignored if there's only one account */
 @SuppressWarnings("MissingPermission")
@@ -353,24 +351,23 @@
         return Optional.absent();
       }
       ImmutableSet<String> validAccountTypes = PreferredAccountUtil.getValidAccountTypes(context);
-      Set<String> result = new ArraySet<>();
+      String result = null;
       while (cursor.moveToNext()) {
         Optional<String> accountType =
             getAccountType(context.getContentResolver(), cursor.getLong(0));
-        if (accountType.isPresent() && validAccountTypes.contains(accountType.get())) {
-          result.add(cursor.getString(0));
-        } else {
+        if (!accountType.isPresent() || !validAccountTypes.contains(accountType.get())) {
           LogUtil.i("CallingAccountSelector.getDataId", "ignoring non-writable " + accountType);
+          continue;
         }
+        if (result != null && !result.equals(cursor.getString(0))) {
+          // TODO(twyen): if there are multiple entries attempt to grab from the contact that
+          // initiated the call.
+          LogUtil.i("CallingAccountSelector.getDataId", "lookup result not unique, ignoring");
+          return Optional.absent();
+        }
+        result = cursor.getString(0);
       }
-      // TODO(twyen): if there are multiples attempt to grab from the contact that initiated the
-      // call.
-      if (result.size() == 1) {
-        return Optional.of(result.iterator().next());
-      } else {
-        LogUtil.i("CallingAccountSelector.getDataId", "lookup result not unique, ignoring");
-        return Optional.absent();
-      }
+      return Optional.fromNullable(result);
     }
   }
 
