diff --git a/Common/src/com/googlecode/android_scripting/facade/telephony/SubscriptionManagerFacade.java b/Common/src/com/googlecode/android_scripting/facade/telephony/SubscriptionManagerFacade.java
index f277a49..a91ccc6 100644
--- a/Common/src/com/googlecode/android_scripting/facade/telephony/SubscriptionManagerFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/telephony/SubscriptionManagerFacade.java
@@ -75,7 +75,7 @@
     public void subscriptionSetDefaultVoiceSubId(
             @RpcParameter(name = "subId")
             Integer subId) {
-        mSubscriptionManager.setDefaultVoiceSubId(subId);
+        mSubscriptionManager.setDefaultVoiceSubscriptionId(subId);
     }
 
     @Rpc(description = "Return the default sms subscription ID")
@@ -90,9 +90,13 @@
         mSubscriptionManager.setDefaultSmsSubId(subId);
     }
 
-    @Rpc(description = "Return a List of all Subscription Info Records")
+    /**
+     * Get list of all available subscriptions details
+     *
+     */
+    @Rpc(description = "Return a List of available Subscription Info Records")
     public List<SubscriptionInfo> subscriptionGetAllSubInfoList() {
-        return mSubscriptionManager.getAllSubscriptionInfoList();
+        return mSubscriptionManager.getAvailableSubscriptionInfoList();
     }
 
     @Rpc(description = "Return a List of all Active Subscription Info Records")
diff --git a/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyManagerFacade.java b/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyManagerFacade.java
index 8f1db85..a338402 100644
--- a/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyManagerFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyManagerFacade.java
@@ -25,8 +25,9 @@
 import android.net.TrafficStats;
 import android.net.Uri;
 import android.os.RemoteException;
-import android.os.SystemProperties;
 import android.provider.Telephony;
+import android.sysprop.TelephonyProperties;
+import android.telephony.AvailableNetworkInfo;
 import android.telephony.CellInfo;
 import android.telephony.CellLocation;
 import android.telephony.NeighboringCellInfo;
@@ -35,10 +36,8 @@
 import android.telephony.SignalStrength;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
-import android.telephony.AvailableNetworkInfo;
 
 import com.android.internal.telephony.RILConstants;
-import com.android.internal.telephony.TelephonyProperties;
 
 import com.google.common.io.BaseEncoding;
 import com.googlecode.android_scripting.Log;
@@ -46,10 +45,10 @@
 import com.googlecode.android_scripting.facade.EventFacade;
 import com.googlecode.android_scripting.facade.FacadeManager;
 import com.googlecode.android_scripting.facade.telephony.TelephonyStateListeners
-                                                   .CallStateChangeListener;
-import com.googlecode.android_scripting.facade.telephony.TelephonyStateListeners
                                                    .ActiveDataSubIdChangeListener;
 import com.googlecode.android_scripting.facade.telephony.TelephonyStateListeners
+                                                   .CallStateChangeListener;
+import com.googlecode.android_scripting.facade.telephony.TelephonyStateListeners
                                                    .CellInfoChangeListener;
 import com.googlecode.android_scripting.facade.telephony.TelephonyStateListeners
                                                    .DataConnectionRealTimeInfoChangeListener;
@@ -67,8 +66,8 @@
 import com.googlecode.android_scripting.rpc.RpcOptional;
 import com.googlecode.android_scripting.rpc.RpcParameter;
 
-import java.util.Arrays;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.concurrent.Executor;
@@ -753,6 +752,25 @@
             mTelephonyManager.getPhoneType());
     }
 
+    @Rpc(description = "Return if setAlwaysAllowMMSData is set correctly")
+    public boolean telephonySetAlwaysAllowMmsData(
+            @RpcParameter(name = "subId") Integer subId,
+            @RpcParameter(name = "alwaysAllow") Boolean alwaysAllow) {
+        return mTelephonyManager.createForSubscriptionId(subId).setAlwaysAllowMmsData(alwaysAllow);
+    }
+
+    /**
+    * Sets Data Roaming flag for a particular sub Id
+    * @param subId the subscriber id
+    * @param isEnabled can you set to true or false
+    */
+    @Rpc(description = "Sets data roaming for a sub Id")
+    public void telephonySetDataRoamingEnabled(
+            @RpcParameter(name = "subId") Integer subId,
+            @RpcParameter(name = "isEnabled") Boolean isEnabled) {
+        mTelephonyManager.createForSubscriptionId(subId).setDataRoamingEnabled(isEnabled);
+    }
+
     @Rpc(description = "Returns preferred opportunistic data subscription Id")
     public Integer telephonyGetPreferredOpportunisticDataSubscription() {
         return mTelephonyManager.getPreferredOpportunisticDataSubscription();
@@ -1206,7 +1224,8 @@
         String mcc = "";
         String mnc = "";
 
-        String numeric = SystemProperties.get(TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC);
+        List<String> numerics = TelephonyProperties.icc_operator_numeric();
+        String numeric = numerics.isEmpty() ? null : numerics.get(0);
         // MCC is first 3 chars and then in 2 - 3 chars of MNC
         if (numeric != null && numeric.length() > 4) {
             // Country code
