diff --git a/extphone/src/com/qti/extphone/ExtPhoneCallbackBase.java b/extphone/src/com/qti/extphone/ExtPhoneCallbackBase.java
index 5154e0d..1aebe8d 100644
--- a/extphone/src/com/qti/extphone/ExtPhoneCallbackBase.java
+++ b/extphone/src/com/qti/extphone/ExtPhoneCallbackBase.java
@@ -188,14 +188,4 @@
     public void onDdsSwitchRecommendation(int slotId,
             int recommendedSlotId) throws RemoteException {
     }
-
-    @Override
-    public void onDataDeactivateDelayTime(int slotId, long delayTimeMilliSecs)
-            throws RemoteException {
-    }
-
-    @Override
-    public void onEpdgOverCellularDataSupported(int slotId, boolean support)
-            throws RemoteException {
-    }
 }
diff --git a/extphone/src/com/qti/extphone/ExtTelephonyManager.java b/extphone/src/com/qti/extphone/ExtTelephonyManager.java
index 74d1541..ac0cf70 100644
--- a/extphone/src/com/qti/extphone/ExtTelephonyManager.java
+++ b/extphone/src/com/qti/extphone/ExtTelephonyManager.java
@@ -871,22 +871,7 @@
             throw new RemoteException("verifySimPukChangePin ended in remote exception");
         }
     }
-
-    public boolean isEpdgOverCellularDataSupported(int slot) throws RemoteException {
-        boolean support = false;
-        if (!isServiceConnected()) {
-            Log.e(LOG_TAG, "service not connected!");
-            return support;
-        }
-        try {
-            support = mExtTelephonyService.isEpdgOverCellularDataSupported(slot);
-        } catch(RemoteException e) {
-            Log.e(LOG_TAG, "isEpdgOverCellularDataSupported, remote exception");
-            e.printStackTrace();
-        }
-        return support;
-    }
-
+    
     public Client registerCallback(String packageName, IExtPhoneCallback callback) {
         Client client = null;
         if (!isServiceConnected()) {
diff --git a/extphone/src/com/qti/extphone/IExtPhone.aidl b/extphone/src/com/qti/extphone/IExtPhone.aidl
index 3935ee8..8cb604c 100644
--- a/extphone/src/com/qti/extphone/IExtPhone.aidl
+++ b/extphone/src/com/qti/extphone/IExtPhone.aidl
@@ -431,12 +431,4 @@
      */
      Token sendUserPreferenceForDataDuringVoiceCall(int slotId,
              boolean userPreference, in Client client);
-
-    /**
-     * Request for epdg over cellular data (cellular IWLAN) feature is supported or not.
-     *
-     * @param - slotId slot ID
-     * @return - boolean value indicates if the feature is supported or not
-     */
-     boolean isEpdgOverCellularDataSupported(int slotId);
 }
diff --git a/extphone/src/com/qti/extphone/IExtPhoneCallback.aidl b/extphone/src/com/qti/extphone/IExtPhoneCallback.aidl
index 1b20d3e..bcebb82 100644
--- a/extphone/src/com/qti/extphone/IExtPhoneCallback.aidl
+++ b/extphone/src/com/qti/extphone/IExtPhoneCallback.aidl
@@ -219,20 +219,4 @@
      * @param - recommendedSlotId slot ID to which DDS has to be switched.
      */
     void onDdsSwitchRecommendation(int slotId, int recommendedSlotId);
-
-    /**
-     * Indiactes the delay time to deactivate default data pdn when cellular IWLAN feature is ON.
-     * @param - delayTimeMilliSecs delayTimeMilliSecs>0 indicates one or more pdns
-     *           are present on cellular IWLAN RAT and wait for delayTimeMilliSecs
-     *           to deactivate default data pdn if required.
-     *           delayTimeMilliSecs<=0 indicates no pdns are available on cellular IWLAN RAT.
-     */
-    void onDataDeactivateDelayTime(int slotId, long delayTimeMilliSecs);
-
-    /**
-     * Indicates epdg over cellular data (cellular IWLAN) feature is supported or not.
-     *
-     * @param - support support indicates if the feature is supported or not.
-     */
-    void onEpdgOverCellularDataSupported(int slotId, boolean support);
 }
