diff --git a/src/com/android/services/telephony/ImsConferenceController.java b/src/com/android/services/telephony/ImsConferenceController.java
index e93ebd4..249d639 100644
--- a/src/com/android/services/telephony/ImsConferenceController.java
+++ b/src/com/android/services/telephony/ImsConferenceController.java
@@ -21,7 +21,7 @@
 import android.telecom.Connection;
 import android.telecom.ConnectionService;
 import android.telecom.DisconnectCause;
-import android.telecom.IConferenceable;
+import android.telecom.Conferenceable;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -146,8 +146,8 @@
      */
     private void recalculateConferenceable() {
         Log.v(this, "recalculateConferenceable : %d", mTelephonyConnections.size());
-        List<IConferenceable> activeConnections = new ArrayList<>(mTelephonyConnections.size());
-        List<IConferenceable> backgroundConnections = new ArrayList<>(mTelephonyConnections.size());
+        List<Conferenceable> activeConnections = new ArrayList<>(mTelephonyConnections.size());
+        List<Conferenceable> backgroundConnections = new ArrayList<>(mTelephonyConnections.size());
 
         // Loop through and collect all calls which are active or holding
         for (Connection connection : mTelephonyConnections) {
@@ -190,7 +190,7 @@
 
         // Go through all the active connections and set the background connections as
         // conferenceable.
-        for (IConferenceable conferenceable : activeConnections) {
+        for (Conferenceable conferenceable : activeConnections) {
             if (conferenceable instanceof Connection) {
                 Connection connection = (Connection) conferenceable;
                 connection.setConferenceables(backgroundConnections);
@@ -199,7 +199,7 @@
 
         // Go through all the background connections and set the active connections as
         // conferenceable.
-        for (IConferenceable conferenceable : backgroundConnections) {
+        for (Conferenceable conferenceable : backgroundConnections) {
             if (conferenceable instanceof Connection) {
                 Connection connection = (Connection) conferenceable;
                 connection.setConferenceables(activeConnections);
