diff --git a/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothLeAdvertiseFacade.java b/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothLeAdvertiseFacade.java
index 413738e..5eef144 100644
--- a/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothLeAdvertiseFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothLeAdvertiseFacade.java
@@ -54,7 +54,6 @@
     private final EventFacade mEventFacade;
     private BluetoothAdapter mBluetoothAdapter;
     private static int BleAdvertiseCallbackCount;
-    private static int ClassicBleAdvertiseCallbackCount;
     private static int BleAdvertiseSettingsCount;
     private static int BleAdvertiseDataCount;
     private final HashMap<Integer, myAdvertiseCallback> mAdvertiseCallbackList;
@@ -291,34 +290,6 @@
     }
 
     /**
-     * Set ble advertisement data include tx power level
-     *
-     * @param includeTxPowerLevel boolean whether to include the tx power level or not in the
-     *            advertisement
-     */
-    @Rpc(description = "Set ble advertisement data include tx power level")
-    public void setAdvertiseDataIncludeTxPowerLevel(
-            @RpcParameter(name = "includeTxPowerLevel")
-            Boolean includeTxPowerLevel
-            ) {
-        mAdvertiseDataBuilder.setIncludeTxPowerLevel(includeTxPowerLevel);
-    }
-
-    /**
-     * Set ble advertisement data include device name
-     *
-     * @param includeDeviceName boolean whether to include device name or not in the
-     *            advertisement
-     */
-    @Rpc(description = "Set ble advertisement data include device name")
-    public void setAdvertiseDataIncludeDeviceName(
-            @RpcParameter(name = "includeDeviceName")
-            Boolean includeDeviceName
-            ) {
-        mAdvertiseDataBuilder.setIncludeDeviceName(includeDeviceName);
-    }
-
-    /**
      * Get ble advertisement settings mode
      *
      * @param index the advertise settings object to use
@@ -588,8 +559,8 @@
      * @throws Exception
      */
     @Rpc(description = "Set ble advertise settings tx power level")
-    public void setAdvertisementSettingsIncludeTxPowerLevel(
-            @RpcParameter(name = "includeTxPowerLevel")
+    public void setAdvertisementSettingsTxPowerLevel(
+            @RpcParameter(name = "txPowerLevel")
             Integer txPowerLevel
             ) {
         mAdvertiseSettingsBuilder.setTxPowerLevel(txPowerLevel);
@@ -609,6 +580,34 @@
         mAdvertiseSettingsBuilder.setIsConnectable(value);
     }
 
+    /**
+     * Set ble advertisement data include tx power level
+     *
+     * @param includeTxPowerLevel boolean whether to include the tx power level or not in the
+     *            advertisement
+     */
+    @Rpc(description = "Set ble advertisement data include tx power level")
+    public void setAdvertiseDataIncludeTxPowerLevel(
+            @RpcParameter(name = "includeTxPowerLevel")
+            Boolean includeTxPowerLevel
+            ) {
+        mAdvertiseDataBuilder.setIncludeTxPowerLevel(includeTxPowerLevel);
+    }
+
+    /**
+     * Set ble advertisement data include device name
+     *
+     * @param includeDeviceName boolean whether to include device name or not in the
+     *            advertisement
+     */
+    @Rpc(description = "Set ble advertisement data include device name")
+    public void setAdvertiseDataIncludeDeviceName(
+            @RpcParameter(name = "includeDeviceName")
+            Boolean includeDeviceName
+            ) {
+        mAdvertiseDataBuilder.setIncludeDeviceName(includeDeviceName);
+    }
+
     private class myAdvertiseCallback extends AdvertiseCallback {
         public Integer index;
         private final Bundle mResults;
