Add legacy VPN support in SL4A. am: 9d9222a94e
am: 31134cd32e

Change-Id: Iddd90337301a2a7bd5ac25299043eb12f9515809
diff --git a/Common/src/com/googlecode/android_scripting/activity/FutureActivity.java b/Common/src/com/googlecode/android_scripting/activity/FutureActivity.java
index 20e1bf9..f25d457 100644
--- a/Common/src/com/googlecode/android_scripting/activity/FutureActivity.java
+++ b/Common/src/com/googlecode/android_scripting/activity/FutureActivity.java
@@ -39,7 +39,6 @@
  * {@link Service} is unable to do. For example: start another activity for result, show dialogs,
  * etc.
  *
- * @author Damon Kohler (damonkohler@gmail.com)
  */
 public class FutureActivity extends Activity {
   private FutureActivityTask<?> mTask;
diff --git a/Common/src/com/googlecode/android_scripting/facade/ActivityResultFacade.java b/Common/src/com/googlecode/android_scripting/facade/ActivityResultFacade.java
index a90fba4..c5f75ed 100644
--- a/Common/src/com/googlecode/android_scripting/facade/ActivityResultFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/ActivityResultFacade.java
@@ -29,7 +29,6 @@
 /**
  * Allows you to return results to a startActivityForResult call.
  *
- * @author Alexey Reznichenko (alexey.reznichenko@gmail.com)
  */
 public class ActivityResultFacade extends RpcReceiver {
 
diff --git a/Common/src/com/googlecode/android_scripting/facade/BatteryManagerFacade.java b/Common/src/com/googlecode/android_scripting/facade/BatteryManagerFacade.java
index 5d0b34e..efd762f 100644
--- a/Common/src/com/googlecode/android_scripting/facade/BatteryManagerFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/BatteryManagerFacade.java
@@ -37,8 +37,6 @@
  * to batteryStartMonitoring, and then wait for a "battery" event. Sleeping for a second will
  * usually work just as well.
  *
- * @author Alexey Reznichenko (alexey.reznichenko@gmail.com)
- * @author Robbie Matthews (rjmatthews62@gmail.com)
  */
 public class BatteryManagerFacade extends RpcReceiver {
 
diff --git a/Common/src/com/googlecode/android_scripting/facade/ContactsFacade.java b/Common/src/com/googlecode/android_scripting/facade/ContactsFacade.java
index 4ab4a1d..626db88 100644
--- a/Common/src/com/googlecode/android_scripting/facade/ContactsFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/ContactsFacade.java
@@ -39,7 +39,6 @@
 /**
  * Provides access to contacts related functionality.
  *
- * @author MeanEYE.rcf (meaneye.rcf@gmail.com
  */
 public class ContactsFacade extends RpcReceiver {
   private static final Uri CONTACTS_URI = Uri.parse("content://contacts/people");
diff --git a/Common/src/com/googlecode/android_scripting/facade/EventFacade.java b/Common/src/com/googlecode/android_scripting/facade/EventFacade.java
index 36e620d..18404ba 100644
--- a/Common/src/com/googlecode/android_scripting/facade/EventFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/EventFacade.java
@@ -62,7 +62,6 @@
  * The Event Queue provides a useful means of recording background events (such as sensor data) when
  * the phone is busy with foreground activities.
  *
- * @author Felix Arends (felix.arends@gmail.com)
  */
 public class EventFacade extends RpcReceiver {
     /**
diff --git a/Common/src/com/googlecode/android_scripting/facade/LocationFacade.java b/Common/src/com/googlecode/android_scripting/facade/LocationFacade.java
index eed244e..2ff2cb0 100644
--- a/Common/src/com/googlecode/android_scripting/facade/LocationFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/LocationFacade.java
@@ -77,8 +77,6 @@
  * u'admin_area': u'Some City', u'feature_name': u'House Numbers', u'country_code': u'GB',
  * u'country_name': u'United Kingdom', u'postal_code': u'ST1 1'}]
  *
- * @author Damon Kohler (damonkohler@gmail.com)
- * @author Felix Arends (felix.arends@gmail.com)
  */
 public class LocationFacade extends RpcReceiver {
   private final EventFacade mEventFacade;
diff --git a/Common/src/com/googlecode/android_scripting/facade/PreferencesFacade.java b/Common/src/com/googlecode/android_scripting/facade/PreferencesFacade.java
index 31225ff..6c2c89c 100644
--- a/Common/src/com/googlecode/android_scripting/facade/PreferencesFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/PreferencesFacade.java
@@ -44,7 +44,6 @@
  * <a href=http://developer.android.com/guide/topics/data/data-storage.html#pref>Shared
  * Preferences</a> in the android documentation on how preferences work.
  *
- * @author Robbie Matthews (rjmatthews62@gmail.com)
  */
 
 public class PreferencesFacade extends RpcReceiver {
diff --git a/Common/src/com/googlecode/android_scripting/facade/SensorManagerFacade.java b/Common/src/com/googlecode/android_scripting/facade/SensorManagerFacade.java
index 6c4c7b7..5a2655a 100644
--- a/Common/src/com/googlecode/android_scripting/facade/SensorManagerFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/SensorManagerFacade.java
@@ -89,11 +89,6 @@
  * s6 = [-0.26701245009899138, -0.47323511242866517, -0.031366908922791481] ---(azimuth, pitch, roll
  * in radians)<br>
  *
- * @author Damon Kohler (damonkohler@gmail.com)
- * @author Felix Arends (felix.arends@gmail.com)
- * @author Alexey Reznichenko (alexey.reznichenko@gmail.com)
- * @author Robbie Mathews (rjmatthews62@gmail.com)
- * @author John Karwatzki (jokar49@gmail.com)
  */
 public class SensorManagerFacade extends RpcReceiver {
   private final EventFacade mEventFacade;
diff --git a/Common/src/com/googlecode/android_scripting/facade/SettingsFacade.java b/Common/src/com/googlecode/android_scripting/facade/SettingsFacade.java
index 42e2fd9..b066c00 100644
--- a/Common/src/com/googlecode/android_scripting/facade/SettingsFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/SettingsFacade.java
@@ -41,7 +41,6 @@
 /**
  * Exposes phone settings functionality.
  *
- * @author Frank Spychalski (frank.spychalski@gmail.com)
  */
 public class SettingsFacade extends RpcReceiver {
 
diff --git a/Common/src/com/googlecode/android_scripting/facade/SpeechRecognitionFacade.java b/Common/src/com/googlecode/android_scripting/facade/SpeechRecognitionFacade.java
index 5409002..8012125 100644
--- a/Common/src/com/googlecode/android_scripting/facade/SpeechRecognitionFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/SpeechRecognitionFacade.java
@@ -29,7 +29,6 @@
 /**
  * A facade containing RPC implementations related to the speech-to-text functionality of Android.
  *
- * @author Felix Arends (felix.arends@gmail.com)
  *
  */
 public class SpeechRecognitionFacade extends RpcReceiver {
diff --git a/Common/src/com/googlecode/android_scripting/facade/WakeLockFacade.java b/Common/src/com/googlecode/android_scripting/facade/WakeLockFacade.java
index 966e286..e1f0ad0 100644
--- a/Common/src/com/googlecode/android_scripting/facade/WakeLockFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/WakeLockFacade.java
@@ -30,8 +30,6 @@
 /**
  * A facade exposing some of the functionality of the PowerManager, in particular wake locks.
  *
- * @author Felix Arends (felixarends@gmail.com)
- * @author Damon Kohler (damonkohler@gmail.com)
  */
 public class WakeLockFacade extends RpcReceiver {
 
diff --git a/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothConnectionFacade.java b/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothConnectionFacade.java
index c2c1c02..9d2c5ce 100644
--- a/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothConnectionFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothConnectionFacade.java
@@ -27,9 +27,11 @@
 import android.bluetooth.BluetoothA2dpSink;
 import android.bluetooth.BluetoothAdapter;
 import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothManager;
 import android.bluetooth.BluetoothHeadset;
 import android.bluetooth.BluetoothHeadsetClient;
 import android.bluetooth.BluetoothInputDevice;
+import android.bluetooth.BluetoothPan;
 import android.bluetooth.BluetoothUuid;
 import android.content.BroadcastReceiver;
 import android.content.Context;
@@ -48,7 +50,9 @@
 public class BluetoothConnectionFacade extends RpcReceiver {
 
     private final Service mService;
+    private final Context mContext;
     private final BluetoothAdapter mBluetoothAdapter;
+    private final BluetoothManager mBluetoothManager;
     private final BluetoothPairingHelper mPairingHelper;
     private final Map<String, BroadcastReceiver> listeningDevices;
     private final EventFacade mEventFacade;
@@ -61,6 +65,7 @@
     private final IntentFilter mHidStateChangeFilter;
     private final IntentFilter mHspStateChangeFilter;
     private final IntentFilter mHfpClientStateChangeFilter;
+    private final IntentFilter mPanStateChangeFilter;
 
     private final Bundle mGoodNews;
     private final Bundle mBadNews;
@@ -70,21 +75,26 @@
     private BluetoothHidFacade mHidProfile;
     private BluetoothHspFacade mHspProfile;
     private BluetoothHfpClientFacade mHfpClientProfile;
+    private BluetoothPanFacade mPanProfile;
 
     public BluetoothConnectionFacade(FacadeManager manager) {
         super(manager);
         mService = manager.getService();
+        mContext = mService.getApplicationContext();
         mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
-        mPairingHelper = new BluetoothPairingHelper();
+        mBluetoothManager = (BluetoothManager) mContext.getSystemService(
+                Service.BLUETOOTH_SERVICE);
         // Use a synchronized map to avoid racing problems
         listeningDevices = Collections.synchronizedMap(new HashMap<String, BroadcastReceiver>());
 
         mEventFacade = manager.getReceiver(EventFacade.class);
+        mPairingHelper = new BluetoothPairingHelper(mEventFacade);
         mA2dpProfile = manager.getReceiver(BluetoothA2dpFacade.class);
         mA2dpSinkProfile = manager.getReceiver(BluetoothA2dpSinkFacade.class);
         mHidProfile = manager.getReceiver(BluetoothHidFacade.class);
         mHspProfile = manager.getReceiver(BluetoothHspFacade.class);
         mHfpClientProfile = manager.getReceiver(BluetoothHfpClientFacade.class);
+        mPanProfile = manager.getReceiver(BluetoothPanFacade.class);
 
         mDiscoverConnectFilter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
         mDiscoverConnectFilter.addAction(BluetoothDevice.ACTION_UUID);
@@ -106,6 +116,8 @@
         mHspStateChangeFilter = new IntentFilter(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED);
         mHfpClientStateChangeFilter =
             new IntentFilter(BluetoothHeadsetClient.ACTION_CONNECTION_STATE_CHANGED);
+        mPanStateChangeFilter =
+            new IntentFilter(BluetoothPan.ACTION_CONNECTION_STATE_CHANGED);
 
         mGoodNews = new Bundle();
         mGoodNews.putBoolean("Status", true);
@@ -268,6 +280,12 @@
                     mEventFacade.postEvent("HspConnect" + mDeviceID, mGoodNews);
                     unregisterCachedListener("HspConnecting" + mDeviceID);
                 }
+            } else if (action.equals(BluetoothPan.ACTION_CONNECTION_STATE_CHANGED)) {
+                int state = intent.getIntExtra(BluetoothPan.EXTRA_STATE, -1);
+                if (state == BluetoothPan.STATE_CONNECTED) {
+                    mEventFacade.postEvent("PanConnect" + mDeviceID, mGoodNews);
+                    unregisterCachedListener("PanConnecting" + mDeviceID);
+                }
             }
         }
     }
@@ -344,6 +362,18 @@
                 mEventFacade.postEvent("HfpClientConnect" + deviceID, mBadNews);
             }
         }
+        if (BluetoothUuid.containsAnyUuid(BluetoothPanFacade.UUIDS, deviceUuids)) {
+            boolean status = mPanProfile.panConnect(device);
+            if (status) {
+                Log.d("Connecting Pan...");
+                ConnectStateChangeReceiver receiver = new ConnectStateChangeReceiver(deviceID);
+                mService.registerReceiver(receiver, mPanStateChangeFilter);
+                listeningDevices.put("PanConnecting" + deviceID, receiver);
+            } else {
+                Log.d("Failed starting Pan connection.");
+                mEventFacade.postEvent("PanConnect" + deviceID, mBadNews);
+            }
+        }
         mService.unregisterReceiver(mPairingHelper);
     }
 
@@ -356,6 +386,7 @@
         mHidProfile.hidDisconnect(device);
         mHspProfile.hspDisconnect(device);
         mHfpClientProfile.hfpClientDisconnect(device);
+        mPanProfile.panDisconnect(device);
     }
 
     @Rpc(description = "Start intercepting all bluetooth connection pop-ups.")
@@ -374,6 +405,11 @@
         return results;
     }
 
+    @Rpc(description = "Return a list of devices connected through bluetooth LE")
+    public List<BluetoothDevice> bluetoothGetConnectedLeDevices(Integer profile) {
+        return mBluetoothManager.getConnectedDevices(profile);
+    }
+
     @Rpc(description = "Return true if a bluetooth device is connected.")
     public Boolean bluetoothIsDeviceConnected(String deviceID) {
         for (BluetoothDevice bd : mBluetoothAdapter.getBondedDevices()) {
diff --git a/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothFacade.java b/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothFacade.java
index f727ca1..da136fd 100644
--- a/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothFacade.java
@@ -53,6 +53,8 @@
     private final IntentFilter discoveryFilter;
     private final EventFacade mEventFacade;
     private final BluetoothStateReceiver mStateReceiver;
+    private static final Object mReceiverLock = new Object();
+    private BluetoothStateReceiver mMultiStateReceiver;
     private final BleStateReceiver mBleStateReceiver;
     private Map<String, BluetoothConnection> connections =
             new HashMap<String, BluetoothConnection>();
@@ -76,6 +78,7 @@
         discoveryFilter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
         mDiscoveryReceiver = new DiscoveryCacheReceiver();
         mStateReceiver = new BluetoothStateReceiver();
+        mMultiStateReceiver = null;
         mBleStateReceiver = new BleStateReceiver();
     }
 
@@ -102,6 +105,16 @@
 
     class BluetoothStateReceiver extends BroadcastReceiver {
 
+        private final boolean mIsMultiBroadcast;
+
+        public BluetoothStateReceiver() {
+            mIsMultiBroadcast = false;
+        }
+
+        public BluetoothStateReceiver(boolean isMultiBroadcast) {
+            mIsMultiBroadcast = isMultiBroadcast;
+        }
+
         @Override
         public void onReceive(Context context, Intent intent) {
             String action = intent.getAction();
@@ -111,11 +124,11 @@
                 if (state == BluetoothAdapter.STATE_ON) {
                     msg.putString("State", "ON");
                     mEventFacade.postEvent("BluetoothStateChangedOn", msg);
-                    mService.unregisterReceiver(mStateReceiver);
+                    if (!mIsMultiBroadcast) mService.unregisterReceiver(mStateReceiver);
                 } else if(state == BluetoothAdapter.STATE_OFF) {
                     msg.putString("State", "OFF");
                     mEventFacade.postEvent("BluetoothStateChangedOff", msg);
-                    mService.unregisterReceiver(mStateReceiver);
+                    if (!mIsMultiBroadcast) mService.unregisterReceiver(mStateReceiver);
                 }
                 msg.clear();
             }
@@ -373,11 +386,39 @@
         return mBluetoothAdapter.disableBLE();
     }
 
+    @Rpc(description = "Listen for Bluetooth State Changes.")
+    public boolean bluetoothStartListeningForAdapterStateChange() {
+        synchronized (mReceiverLock) {
+            if (mMultiStateReceiver != null) {
+                Log.e("Persistent Bluetooth Receiver State Change Listener Already Active");
+                return false;
+            }
+            mMultiStateReceiver = new BluetoothStateReceiver(true);
+            mService.registerReceiver(mMultiStateReceiver,
+                    new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED));
+        }
+        return true;
+    }
+
+    @Rpc(description = "Stop Listening for Bluetooth State Changes.")
+    public boolean bluetoothStopListeningForAdapterStateChange() {
+        synchronized (mReceiverLock) {
+            if (mMultiStateReceiver == null) {
+                Log.d("No Persistent Bluetooth Receiever State Change Listener Found to Stop");
+                return false;
+            }
+            mService.unregisterReceiver(mMultiStateReceiver);
+            mMultiStateReceiver = null;
+        }
+        return true;
+    }
+
     @Override
     public void shutdown() {
         for (Map.Entry<String, BluetoothConnection> entry : connections.entrySet()) {
             entry.getValue().stop();
         }
+        if (mMultiStateReceiver != null ) bluetoothStopListeningForAdapterStateChange();
         connections.clear();
     }
 }
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 3537c9a..94356d7 100644
--- a/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothLeAdvertiseFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothLeAdvertiseFacade.java
@@ -37,7 +37,6 @@
 import com.googlecode.android_scripting.jsonrpc.RpcReceiver;
 import com.googlecode.android_scripting.rpc.Rpc;
 import com.googlecode.android_scripting.rpc.RpcParameter;
-import com.googlecode.android_scripting.ConvertUtils;
 
 /**
  * BluetoothLe Advertise functions.
@@ -318,7 +317,7 @@
      * @throws Exception
      */
     @Rpc(description = "Get ble advertisement data manufacturer specific data")
-    public String bleGetAdvertiseDataManufacturerSpecificData(
+    public byte[] bleGetAdvertiseDataManufacturerSpecificData(
             @RpcParameter(name = "index")
             Integer index,
             @RpcParameter(name = "manufacturerId")
@@ -326,7 +325,7 @@
         if (mAdvertiseDataList.get(index) != null) {
             AdvertiseData mData = mAdvertiseDataList.get(index);
             if (mData.getManufacturerSpecificData() != null) {
-                return ConvertUtils.convertByteArrayToString(mData.getManufacturerSpecificData().get(manufacturerId));
+                return mData.getManufacturerSpecificData().get(manufacturerId);
             } else {
                 throw new Exception("Invalid manufacturerId input:" + Integer.toString(manufacturerId));
             }
@@ -364,7 +363,7 @@
      * @throws Exception
      */
     @Rpc(description = "Get ble advertisement Service Data")
-    public String bleGetAdvertiseDataServiceData(
+    public byte[] bleGetAdvertiseDataServiceData(
             @RpcParameter(name = "index")
             Integer index,
             @RpcParameter(name = "serviceUuid")
@@ -373,7 +372,7 @@
         if (mAdvertiseDataList.get(index) != null) {
             AdvertiseData mData = mAdvertiseDataList.get(index);
             if (mData.getServiceData().containsKey(uuidKey)) {
-                return ConvertUtils.convertByteArrayToString(mData.getServiceData().get(uuidKey));
+                return mData.getServiceData().get(uuidKey);
             } else {
                 throw new Exception("Invalid serviceUuid input:" + serviceUuid);
             }
@@ -429,11 +428,11 @@
             @RpcParameter(name = "serviceDataUuid")
             String serviceDataUuid,
             @RpcParameter(name = "serviceData")
-            String serviceData
+            byte[] serviceData
             ) {
         mAdvertiseDataBuilder.addServiceData(
                 ParcelUuid.fromString(serviceDataUuid),
-                ConvertUtils.convertStringToByteArray(serviceData));
+                serviceData);
     }
 
     /**
@@ -448,10 +447,10 @@
             @RpcParameter(name = "manufacturerId")
             Integer manufacturerId,
             @RpcParameter(name = "manufacturerSpecificData")
-            String manufacturerSpecificData
+            byte[] manufacturerSpecificData
             ) {
         mAdvertiseDataBuilder.addManufacturerData(manufacturerId,
-                ConvertUtils.convertStringToByteArray(manufacturerSpecificData));
+                manufacturerSpecificData);
     }
 
     /**
diff --git a/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothLeScanFacade.java b/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothLeScanFacade.java
index 7ae78a2..db739a6 100644
--- a/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothLeScanFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothLeScanFacade.java
@@ -35,7 +35,6 @@
 import android.os.Bundle;
 import android.os.ParcelUuid;
 
-import com.googlecode.android_scripting.ConvertUtils;
 import com.googlecode.android_scripting.Log;
 import com.googlecode.android_scripting.MainThread;
 import com.googlecode.android_scripting.facade.EventFacade;
@@ -278,12 +277,10 @@
         if (mLeScanCallbackList.get(leCallbackIndex) != null) {
             result = mBluetoothAdapter.startLeScan(serviceUuids,
                     mLeScanCallbackList.get(leCallbackIndex));
-            System.out.println(result);
         } else {
             throw new Exception("Invalid leCallbackIndex input:"
                     + Integer.toString(leCallbackIndex));
         }
-        System.out.println(result);
         return result;
     }
 
@@ -521,7 +518,7 @@
      * @throws Exception
      */
     @Rpc(description = "Get ScanFilter's manufacturer data")
-    public String bleGetScanFilterManufacturerData(
+    public byte[] bleGetScanFilterManufacturerData(
             @RpcParameter(name = "index")
             Integer index,
             @RpcParameter(name = "filterIndex")
@@ -529,8 +526,7 @@
             throws Exception {
         if (mScanFilterList.get(index) != null) {
             if (mScanFilterList.get(index).get(filterIndex) != null) {
-                return ConvertUtils.convertByteArrayToString(mScanFilterList.get(index)
-                        .get(filterIndex).getManufacturerData());
+                return mScanFilterList.get(index).get(filterIndex).getManufacturerData();
             } else {
                 throw new Exception("Invalid filterIndex input:" + Integer.toString(filterIndex));
             }
@@ -547,7 +543,7 @@
      * @throws Exception
      */
     @Rpc(description = "Get ScanFilter's manufacturer data mask")
-    public String bleGetScanFilterManufacturerDataMask(
+    public byte[] bleGetScanFilterManufacturerDataMask(
             @RpcParameter(name = "index")
             Integer index,
             @RpcParameter(name = "filterIndex")
@@ -555,8 +551,7 @@
             throws Exception {
         if (mScanFilterList.get(index) != null) {
             if (mScanFilterList.get(index).get(filterIndex) != null) {
-                return ConvertUtils.convertByteArrayToString(mScanFilterList.get(index)
-                        .get(filterIndex).getManufacturerDataMask());
+                return mScanFilterList.get(index).get(filterIndex).getManufacturerDataMask();
             } else {
                 throw new Exception("Invalid filterIndex input:" + Integer.toString(filterIndex));
             }
@@ -573,7 +568,7 @@
      * @throws Exception
      */
     @Rpc(description = "Get ScanFilter's service data")
-    public String bleGetScanFilterServiceData(
+    public byte[] bleGetScanFilterServiceData(
             @RpcParameter(name = "index")
             Integer index,
             @RpcParameter(name = "filterIndex")
@@ -581,8 +576,7 @@
             throws Exception {
         if (mScanFilterList.get(index) != null) {
             if (mScanFilterList.get(index).get(filterIndex) != null) {
-                return ConvertUtils.convertByteArrayToString(mScanFilterList
-                        .get(index).get(filterIndex).getServiceData());
+                return mScanFilterList.get(index).get(filterIndex).getServiceData();
             } else {
                 throw new Exception("Invalid filterIndex input:" + Integer.toString(filterIndex));
             }
@@ -599,7 +593,7 @@
      * @throws Exception
      */
     @Rpc(description = "Get ScanFilter's service data mask")
-    public String bleGetScanFilterServiceDataMask(
+    public byte[] bleGetScanFilterServiceDataMask(
             @RpcParameter(name = "index")
             Integer index,
             @RpcParameter(name = "filterIndex")
@@ -607,8 +601,7 @@
             throws Exception {
         if (mScanFilterList.get(index) != null) {
             if (mScanFilterList.get(index).get(filterIndex) != null) {
-                return ConvertUtils.convertByteArrayToString(mScanFilterList.get(index)
-                        .get(filterIndex).getServiceDataMask());
+                return mScanFilterList.get(index).get(filterIndex).getServiceDataMask();
             } else {
                 throw new Exception("Invalid filterIndex input:" + Integer.toString(filterIndex));
             }
@@ -704,18 +697,17 @@
             @RpcParameter(name = "manufacturerDataId")
             Integer manufacturerDataId,
             @RpcParameter(name = "manufacturerData")
-            String manufacturerData,
+            byte[] manufacturerData,
             @RpcParameter(name = "manufacturerDataMask")
             @RpcOptional
-            String manufacturerDataMask
+            byte[] manufacturerDataMask
             ){
         if (manufacturerDataMask != null) {
             mScanFilterBuilder.setManufacturerData(manufacturerDataId,
-                    ConvertUtils.convertStringToByteArray(manufacturerData),
-                    ConvertUtils.convertStringToByteArray(manufacturerDataMask));
+                    manufacturerData, manufacturerDataMask);
         } else {
             mScanFilterBuilder.setManufacturerData(manufacturerDataId,
-                    ConvertUtils.convertStringToByteArray(manufacturerData));
+                    manufacturerData);
         }
     }
 
@@ -731,21 +723,19 @@
             @RpcParameter(name = "serviceUuid")
             String serviceUuid,
             @RpcParameter(name = "serviceData")
-            String serviceData,
+            byte[] serviceData,
             @RpcParameter(name = "serviceDataMask")
             @RpcOptional
-            String serviceDataMask
+            byte[] serviceDataMask
             ) {
         if (serviceDataMask != null) {
             mScanFilterBuilder
                     .setServiceData(
                             ParcelUuid.fromString(serviceUuid),
-                            ConvertUtils.convertStringToByteArray(serviceData),
-                            ConvertUtils.convertStringToByteArray(
-                                serviceDataMask));
+                            serviceData, serviceDataMask);
         } else {
             mScanFilterBuilder.setServiceData(ParcelUuid.fromString(serviceUuid),
-                    ConvertUtils.convertStringToByteArray(serviceData));
+                    serviceData);
         }
     }
 
@@ -886,7 +876,7 @@
             Log.d("bluetooth_classic_le_scan " + mEventType + " " + index);
             mResults.putParcelable("Device", device);
             mResults.putInt("Rssi", rssi);
-            mResults.putString("ScanRecord", ConvertUtils.convertByteArrayToString(scanRecord));
+            mResults.putByteArray("ScanRecord", scanRecord);
             mResults.putString("Type", "onLeScan");
             mEventFacade.postEvent(mEventType + index + "onLeScan", mResults.clone());
             mResults.clear();
diff --git a/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothPairingHelper.java b/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothPairingHelper.java
index dbefd70..ce7123d 100644
--- a/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothPairingHelper.java
+++ b/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothPairingHelper.java
@@ -20,12 +20,17 @@
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
+import android.os.Bundle;
 
 import com.googlecode.android_scripting.Log;
+import com.googlecode.android_scripting.facade.EventFacade;
 
 public class BluetoothPairingHelper extends BroadcastReceiver {
-  public BluetoothPairingHelper() {
+  private final EventFacade mEventFacade;
+
+  public BluetoothPairingHelper(EventFacade eventFacade) {
     super();
+    mEventFacade = eventFacade;
     Log.d("Pairing helper created.");
   }
   /**
@@ -34,11 +39,17 @@
   @Override
   public void onReceive(Context c, Intent intent) {
     String action = intent.getAction();
+    Bundle result = new Bundle();
     Log.d("Bluetooth pairing intent received: " + action);
     BluetoothDevice mDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
     if(action.equals(BluetoothDevice.ACTION_PAIRING_REQUEST)) {
       int type = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_VARIANT, BluetoothDevice.ERROR);
       Log.d("Processing Action Paring Request with type " + type);
+      int pin = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_KEY,0);
+      result.putInt("Pin", pin);
+      result.putInt("PairingVariant", type);
+      mEventFacade.postEvent("BluetoothActionPairingRequest" + Integer.toString(type), result.clone());
+      result.clear();
       if(type == BluetoothDevice.PAIRING_VARIANT_PASSKEY_CONFIRMATION ||
          type == BluetoothDevice.PAIRING_VARIANT_CONSENT) {
         mDevice.setPairingConfirmation(true);
@@ -71,4 +82,4 @@
       }
     }
   }
-}
\ No newline at end of file
+}
diff --git a/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothPanFacade.java b/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothPanFacade.java
new file mode 100644
index 0000000..3cf96e6
--- /dev/null
+++ b/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothPanFacade.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright (C) 2016 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package com.googlecode.android_scripting.facade.bluetooth;
+
+import java.util.List;
+
+import android.app.Service;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothPan;
+import android.bluetooth.BluetoothProfile;
+import android.bluetooth.BluetoothUuid;
+import android.os.ParcelUuid;
+
+import com.googlecode.android_scripting.Log;
+import com.googlecode.android_scripting.facade.FacadeManager;
+import com.googlecode.android_scripting.jsonrpc.RpcReceiver;
+import com.googlecode.android_scripting.rpc.Rpc;
+import com.googlecode.android_scripting.rpc.RpcParameter;
+
+public class BluetoothPanFacade extends RpcReceiver {
+
+    static final ParcelUuid[] UUIDS = {
+        BluetoothUuid.NAP,
+        BluetoothUuid.PANU,
+    };
+
+    private final Service mService;
+    private final BluetoothAdapter mBluetoothAdapter;
+
+    private static boolean sIsPanReady = false;
+    private static BluetoothPan sPanProfile = null;
+
+    public BluetoothPanFacade(FacadeManager manager) {
+        super(manager);
+        mService = manager.getService();
+        mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
+        mBluetoothAdapter.getProfileProxy(mService, new PanServiceListener(),
+            BluetoothProfile.PAN);
+    }
+
+    class PanServiceListener implements BluetoothProfile.ServiceListener {
+        @Override
+        public void onServiceConnected(int profile, BluetoothProfile proxy) {
+            sPanProfile = (BluetoothPan) proxy;
+            sIsPanReady = true;
+        }
+
+        @Override
+        public void onServiceDisconnected(int profile) {
+            sIsPanReady = false;
+        }
+    }
+
+    @Rpc(description = "Set Bluetooth Tethering")
+    public void bluetoothPanSetBluetoothTethering(
+            @RpcParameter(name = "enable") Boolean enable) {
+        sPanProfile.setBluetoothTethering(enable);
+    }
+
+    public Boolean panConnect(BluetoothDevice device) {
+        if (sPanProfile == null) return false;
+        return sPanProfile.connect(device);
+    }
+
+    public Boolean panDisconnect(BluetoothDevice device) {
+        if (sPanProfile == null) return false;
+        return sPanProfile.disconnect(device);
+    }
+
+    @Rpc(description = "Is Pan profile ready.")
+    public Boolean bluetoothPanIsReady() {
+        return sIsPanReady;
+    }
+
+    @Rpc(description = "Get all the devices connected through PAN")
+    public List<BluetoothDevice> bluetoothPanGetConnectedDevices() {
+        return sPanProfile.getConnectedDevices();
+    }
+
+    @Rpc(description = "Is tethering on.")
+    public Boolean bluetoothPanIsTetheringOn() {
+        if (!sIsPanReady || sPanProfile == null) {
+            return false;
+        }
+        return sPanProfile.isTetheringOn();
+    }
+
+    public void shutdown() {
+    }
+}
diff --git a/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothRfcommFacade.java b/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothRfcommFacade.java
index f25e93e..f4c4a62 100644
--- a/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothRfcommFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/bluetooth/BluetoothRfcommFacade.java
@@ -25,6 +25,8 @@
 import android.os.ParcelFileDescriptor;
 
 import com.googlecode.android_scripting.Log;
+import com.googlecode.android_scripting.facade.EventFacade;
+import com.googlecode.android_scripting.facade.bluetooth.BluetoothPairingHelper;
 import com.googlecode.android_scripting.facade.FacadeManager;
 import com.googlecode.android_scripting.jsonrpc.RpcReceiver;
 import com.googlecode.android_scripting.rpc.Rpc;
@@ -57,17 +59,17 @@
   private static final String DEFAULT_UUID = "457807c0-4897-11df-9879-0800200c9a66";
   private static final String SDP_NAME = "SL4A";
   private final Service mService;
-  private final BluetoothPairingHelper mPairingReceiver;
   private final BluetoothAdapter mBluetoothAdapter;
   private Map<String, BluetoothConnection>
           connections = new HashMap<String, BluetoothConnection>();
-  private BluetoothSocket mCurrentSocket;
-  private ConnectThread mCurrThread;
+  private final EventFacade mEventFacade;
+  private ConnectThread mConnectThread;
+  private AcceptThread mAcceptThread;
 
   public BluetoothRfcommFacade(FacadeManager manager) {
     super(manager);
+    mEventFacade = manager.getReceiver(EventFacade.class);
     mService = manager.getService();
-    mPairingReceiver = new BluetoothPairingHelper();
     mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
   }
 
@@ -79,7 +81,7 @@
       conn = (BluetoothConnection) connections.values().toArray()[0];
     }
     if (conn == null) {
-      throw new IOException("Bluetooth not ready for this connID.");
+      throw new IOException("Bluetooth connection not established.");
     }
     return conn;
   }
@@ -91,10 +93,8 @@
     return uuid;
   }
 
-  @Rpc(description = "Connect to a device over Bluetooth. "
-                   + "Blocks until the connection is established or fails.",
-       returns = "True if the connection was established successfully.")
-  public String bluetoothRfcommConnect(
+  @Rpc(description = "Begins a thread initiate an Rfcomm connection over Bluetooth. ")
+  public void bluetoothRfcommBeginConnectThread(
       @RpcParameter(name = "address", description = "The mac address of the device to connect to.")
       String address,
       @RpcParameter(name = "uuid",
@@ -103,38 +103,38 @@
       String uuid)
       throws IOException {
     BluetoothDevice mDevice;
-    BluetoothSocket mSocket;
-    BluetoothConnection conn;
     mDevice = mBluetoothAdapter.getRemoteDevice(address);
-    // Register a broadcast receiver to bypass manual confirmation
-    IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_PAIRING_REQUEST);
-    mService.registerReceiver(mPairingReceiver, filter);
-    ConnectThread t = new ConnectThread(mDevice, uuid);
-    t.run();
-    mCurrThread = t;
-    conn = new BluetoothConnection(mCurrThread.getSocket());
-    Log.d("Connection Successful");
-    mService.unregisterReceiver(mPairingReceiver);
-    return addConnection(conn);
+    ConnectThread connectThread = new ConnectThread(mDevice, uuid);
+    connectThread.start();
+    mConnectThread = connectThread;
   }
 
   @Rpc(description = "Kill thread")
   public void bluetoothRfcommKillConnThread() {
     try {
-        mCurrThread.cancel();
-        mCurrThread.join(5000);
+      mConnectThread.cancel();
+      mConnectThread.join(5000);
     } catch (InterruptedException e) {
-        Log.e("Interrupted Exception: " + e.toString());
+      Log.e("Interrupted Exception: " + e.toString());
     }
   }
 
   /**
-   * Closes an active Rfcomm socket
+   * Closes an active Rfcomm Client socket
    */
-  @Rpc(description = "Close an active Rfcomm socket")
-  public void bluetoothRfcommCloseSocket()
+  @Rpc(description = "Close an active Rfcomm Client socket")
+  public void bluetoothRfcommEndConnectThread()
     throws IOException {
-    mCurrentSocket.close();
+    mConnectThread.cancel();
+  }
+
+  /**
+   * Closes an active Rfcomm Server socket
+   */
+  @Rpc(description = "Close an active Rfcomm Server socket")
+  public void bluetoothRfcommEndAcceptThread()
+    throws IOException {
+    mAcceptThread.cancel();
   }
 
   @Rpc(description = "Returns active Bluetooth connections.")
@@ -158,9 +158,8 @@
     return conn.getConnectedDeviceName();
   }
 
-  @Rpc(description = "Listens for and accepts a Bluetooth connection."
-                   + "Blocks until the connection is established or fails.")
-  public String bluetoothRfcommAccept(
+  @Rpc(description = "Begins a thread to accept an Rfcomm connection over Bluetooth. ")
+  public void bluetoothRfcommBeginAcceptThread(
       @RpcParameter(name = "uuid") @RpcDefault(DEFAULT_UUID) String uuid,
       @RpcParameter(name = "timeout",
                     description = "How long to wait for a new connection, 0 is wait for ever")
@@ -168,17 +167,9 @@
       throws IOException {
     Log.d("Accept bluetooth connection");
     BluetoothServerSocket mServerSocket;
-    mServerSocket =
-        mBluetoothAdapter.listenUsingRfcommWithServiceRecord(SDP_NAME, UUID.fromString(uuid));
-    // Register a broadcast receiver to bypass manual confirmation
-    IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_PAIRING_REQUEST);
-    mService.registerReceiver(mPairingReceiver, filter);
-
-    BluetoothSocket mSocket = mServerSocket.accept(timeout.intValue());
-    BluetoothConnection conn = new BluetoothConnection(mSocket, mServerSocket);
-    mService.unregisterReceiver(mPairingReceiver);
-    mCurrentSocket = mSocket;
-    return addConnection(conn);
+    AcceptThread acceptThread = new AcceptThread(uuid, timeout.intValue());
+    acceptThread.start();
+    mAcceptThread = acceptThread;
   }
 
   @Rpc(description = "Sends ASCII characters over the currently open Bluetooth connection.")
@@ -290,6 +281,13 @@
 
     conn.stop();
     connections.remove(conn.getUUID());
+
+    if (mAcceptThread != null) {
+        mAcceptThread.cancel();
+    }
+    if (mConnectThread != null) {
+        mConnectThread.cancel();
+    }
   }
 
   @Override
@@ -298,7 +296,14 @@
       entry.getValue().stop();
     }
     connections.clear();
+    if (mAcceptThread != null) {
+        mAcceptThread.cancel();
+    }
+    if (mConnectThread != null) {
+        mConnectThread.cancel();
+    }
   }
+
   private class ConnectThread extends Thread {
     private final BluetoothSocket mmSocket;
 
@@ -315,23 +320,78 @@
     public void run() {
       mBluetoothAdapter.cancelDiscovery();
       try {
+        BluetoothConnection conn;
         mmSocket.connect();
+        conn = new BluetoothConnection(mmSocket);
+        Log.d("Connection Successful");
+        addConnection(conn);
       } catch(IOException connectException) {
-        Log.e("Failed to connect socket: " + connectException.toString());
+        cancel();
+        return;
+      }
+    }
+
+    public void cancel() {
+      if (mmSocket != null) {
         try {
           mmSocket.close();
-        } catch(IOException closeException){
+        } catch (IOException closeException){
           Log.e("Failed to close socket: " + closeException.toString());
         }
+      }
+    }
+
+    public BluetoothSocket getSocket() {
+      return mmSocket;
+    }
+  }
+
+
+  private class AcceptThread extends Thread {
+    private final BluetoothServerSocket mmServerSocket;
+    private final int mTimeout;
+    private BluetoothSocket mmSocket;
+
+    public AcceptThread(String uuid, int timeout) {
+      BluetoothServerSocket tmp = null;
+      mTimeout = timeout;
+      try {
+        tmp =
+            mBluetoothAdapter.listenUsingRfcommWithServiceRecord(SDP_NAME, UUID.fromString(uuid));
+      } catch (IOException createSocketException) {
+        Log.e("Failed to create socket: " + createSocketException.toString());
+      }
+      mmServerSocket = tmp;
+    }
+
+    public void run() {
+      try {
+        mmSocket = mmServerSocket.accept(mTimeout);
+        BluetoothConnection conn = new BluetoothConnection(mmSocket, mmServerSocket);
+        addConnection(conn);
+      } catch(IOException connectException) {
+        Log.e("Failed to connect socket: " + connectException.toString());
+        if (mmSocket != null) {
+          cancel();
+        }
         return;
       }
     }
 
     public void cancel() {
-      try {
-        mmSocket.close();
-      } catch (IOException e){
-
+      if (mmSocket != null) {
+        try {
+          mmSocket.close();
+        } catch (IOException closeException){
+          Log.e("Failed to close socket: " + closeException.toString());
+        }
+      }
+      if (mmServerSocket != null) {
+        try{
+          mmServerSocket.close();
+        } catch (IOException closeException) {
+          Log.e("Failed to close socket: " + closeException.toString());
+        }
       }
     }
 
diff --git a/Common/src/com/googlecode/android_scripting/facade/bluetooth/GattServerFacade.java b/Common/src/com/googlecode/android_scripting/facade/bluetooth/GattServerFacade.java
index 66f8b7c..c5d26af 100644
--- a/Common/src/com/googlecode/android_scripting/facade/bluetooth/GattServerFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/bluetooth/GattServerFacade.java
@@ -584,7 +584,7 @@
     public void onMtuChanged(BluetoothDevice device, int mtu) {
       Log.d("gatt_server change onMtuChanged " + mEventType + " " + index);
       mResults.putParcelable("BluetoothDevice", device);
-      mResults.putInt("mtu", mtu);
+      mResults.putInt("MTU", mtu);
       mEventFacade.postEvent(mEventType + index + "onMtuChanged", mResults.clone());
       mResults.clear();
     }
diff --git a/Common/src/com/googlecode/android_scripting/facade/media/MediaPlayerFacade.java b/Common/src/com/googlecode/android_scripting/facade/media/MediaPlayerFacade.java
index 3925a38..279ce06 100644
--- a/Common/src/com/googlecode/android_scripting/facade/media/MediaPlayerFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/media/MediaPlayerFacade.java
@@ -67,7 +67,6 @@
  * will continue playing after the script has finished unless an explicit {@link #mediaPlayClose
  * mediaPlayClose} event is called.
  *
- * @author Robbie Matthews (rjmatthews62@gmail.com)
  */
 
 public class MediaPlayerFacade extends RpcReceiver implements MediaPlayer.OnCompletionListener {
diff --git a/Common/src/com/googlecode/android_scripting/facade/media/MediaRecorderFacade.java b/Common/src/com/googlecode/android_scripting/facade/media/MediaRecorderFacade.java
index ee67fe6..6b5ba34 100644
--- a/Common/src/com/googlecode/android_scripting/facade/media/MediaRecorderFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/media/MediaRecorderFacade.java
@@ -54,9 +54,6 @@
  * and uses the composition matrix (embedded in the video file) to correct for image rotation. Many
  * PC based media players ignore this matrix. Standard video sizes may be specified.
  *
- * @author Felix Arends (felix.arends@gmail.com)
- * @author Damon Kohler (damonkohler@gmail.com)
- * @author John Karwatzki (jokar49@gmail.com)
  */
 public class MediaRecorderFacade extends RpcReceiver {
 
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 6027ab2..4ddb4af 100644
--- a/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyManagerFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/telephony/TelephonyManagerFacade.java
@@ -82,8 +82,6 @@
 /**
  * Exposes TelephonyManager functionality.
  *
- * @author Damon Kohler (damonkohler@gmail.com)
- * @author Felix Arends (felix.arends@gmail.com)
  */
 public class TelephonyManagerFacade extends RpcReceiver {
 
diff --git a/Common/src/com/googlecode/android_scripting/facade/ui/AlertDialogTask.java b/Common/src/com/googlecode/android_scripting/facade/ui/AlertDialogTask.java
index 2a1e48e..b306d06 100644
--- a/Common/src/com/googlecode/android_scripting/facade/ui/AlertDialogTask.java
+++ b/Common/src/com/googlecode/android_scripting/facade/ui/AlertDialogTask.java
@@ -36,7 +36,6 @@
 /**
  * Wrapper class for alert dialog running in separate thread.
  *
- * @author MeanEYE.rcf (meaneye.rcf@gmail.com)
  */
 class AlertDialogTask extends DialogTask {
 
diff --git a/Common/src/com/googlecode/android_scripting/facade/ui/DatePickerDialogTask.java b/Common/src/com/googlecode/android_scripting/facade/ui/DatePickerDialogTask.java
index e80bd25..24b6e1f 100644
--- a/Common/src/com/googlecode/android_scripting/facade/ui/DatePickerDialogTask.java
+++ b/Common/src/com/googlecode/android_scripting/facade/ui/DatePickerDialogTask.java
@@ -27,7 +27,6 @@
 /**
  * Wrapper class for date picker dialog running in separate thread.
  *
- * @author MeanEYE.rcf (meaneye.rcf@gmail.com)
  */
 public class DatePickerDialogTask extends DialogTask {
   public static int mYear;
diff --git a/Common/src/com/googlecode/android_scripting/facade/ui/ProgressDialogTask.java b/Common/src/com/googlecode/android_scripting/facade/ui/ProgressDialogTask.java
index 2d9aabf..331bc14 100644
--- a/Common/src/com/googlecode/android_scripting/facade/ui/ProgressDialogTask.java
+++ b/Common/src/com/googlecode/android_scripting/facade/ui/ProgressDialogTask.java
@@ -21,7 +21,6 @@
 /**
  * Wrapper class for progress dialog running in separate thread
  *
- * @author MeanEYE.rcf (meaneye.rcf@gmail.com)
  */
 class ProgressDialogTask extends DialogTask {
 
diff --git a/Common/src/com/googlecode/android_scripting/facade/ui/SeekBarDialogTask.java b/Common/src/com/googlecode/android_scripting/facade/ui/SeekBarDialogTask.java
index 3930972..1c157b4 100644
--- a/Common/src/com/googlecode/android_scripting/facade/ui/SeekBarDialogTask.java
+++ b/Common/src/com/googlecode/android_scripting/facade/ui/SeekBarDialogTask.java
@@ -32,7 +32,6 @@
 /**
  * Wrapper class for dialog box with seek bar.
  *
- * @author MeanEYE.rcf (meaneye.rcf@gmail.com)
  */
 public class SeekBarDialogTask extends DialogTask {
 
diff --git a/Common/src/com/googlecode/android_scripting/facade/ui/TimePickerDialogTask.java b/Common/src/com/googlecode/android_scripting/facade/ui/TimePickerDialogTask.java
index ad71cd3..1b156ad 100644
--- a/Common/src/com/googlecode/android_scripting/facade/ui/TimePickerDialogTask.java
+++ b/Common/src/com/googlecode/android_scripting/facade/ui/TimePickerDialogTask.java
@@ -27,7 +27,6 @@
 /**
  * Wrapper class for time picker dialog running in separate thread.
  *
- * @author MeanEYE.rcf (meaneye.rcf@gmail.com)
  */
 public class TimePickerDialogTask extends DialogTask {
   private final int mHour;
diff --git a/Common/src/com/googlecode/android_scripting/facade/ui/UiFacade.java b/Common/src/com/googlecode/android_scripting/facade/ui/UiFacade.java
index 7eb4e02..3c61e7c 100644
--- a/Common/src/com/googlecode/android_scripting/facade/ui/UiFacade.java
+++ b/Common/src/com/googlecode/android_scripting/facade/ui/UiFacade.java
@@ -112,7 +112,6 @@
  * There is only ever one instance of a dialog. Any dialogCreate call will cause the existing dialog
  * to be destroyed.
  *
- * @author MeanEYE.rcf (meaneye.rcf@gmail.com)
  */
 public class UiFacade extends RpcReceiver {
   // This value should not be used for menu groups outside this class.
diff --git a/Common/src/com/googlecode/android_scripting/future/FutureActivityTask.java b/Common/src/com/googlecode/android_scripting/future/FutureActivityTask.java
index b474736..3ce9c79 100644
--- a/Common/src/com/googlecode/android_scripting/future/FutureActivityTask.java
+++ b/Common/src/com/googlecode/android_scripting/future/FutureActivityTask.java
@@ -29,7 +29,6 @@
 /**
  * Encapsulates an {@link Activity} and a {@link FutureObject}.
  *
- * @author Damon Kohler (damonkohler@gmail.com)
  */
 public abstract class FutureActivityTask<T> {
 
diff --git a/Common/src/com/googlecode/android_scripting/interpreter/Interpreter.java b/Common/src/com/googlecode/android_scripting/interpreter/Interpreter.java
index 7a69032..043daa7 100644
--- a/Common/src/com/googlecode/android_scripting/interpreter/Interpreter.java
+++ b/Common/src/com/googlecode/android_scripting/interpreter/Interpreter.java
@@ -31,8 +31,6 @@
  * Combines all the execution-related specs of a particular interpreter installed in the system.
  * This class is instantiated through a map received from a concrete InterpreterProfider.
  *
- * @author Damon Kohler (damonkohler@gmail.com)
- * @author Alexey Reznichenko (alexey.reznichenko@gmail.com)
  */
 public class Interpreter implements InterpreterPropertyNames {
 
diff --git a/Common/src/com/googlecode/android_scripting/interpreter/InterpreterConfiguration.java b/Common/src/com/googlecode/android_scripting/interpreter/InterpreterConfiguration.java
index 27f9b7a..8d7ed80 100644
--- a/Common/src/com/googlecode/android_scripting/interpreter/InterpreterConfiguration.java
+++ b/Common/src/com/googlecode/android_scripting/interpreter/InterpreterConfiguration.java
@@ -46,7 +46,6 @@
 /**
  * Manages and provides access to the set of available interpreters.
  *
- * @author Damon Kohler (damonkohler@gmail.com)
  */
 public class InterpreterConfiguration {
 
diff --git a/Common/src/com/googlecode/android_scripting/interpreter/html/HtmlActivityTask.java b/Common/src/com/googlecode/android_scripting/interpreter/html/HtmlActivityTask.java
index fa5d768..e1b0ff1 100644
--- a/Common/src/com/googlecode/android_scripting/interpreter/html/HtmlActivityTask.java
+++ b/Common/src/com/googlecode/android_scripting/interpreter/html/HtmlActivityTask.java
@@ -61,7 +61,6 @@
 import org.json.JSONObject;
 
 /**
- * @author Alexey Reznichenko (alexey.reznichenko@gmail.com)
  */
 public class HtmlActivityTask extends FutureActivityTask<Void> {
 
diff --git a/Common/src/com/googlecode/android_scripting/interpreter/shell/ShellInterpreter.java b/Common/src/com/googlecode/android_scripting/interpreter/shell/ShellInterpreter.java
index a1f11ff..71afcc9 100644
--- a/Common/src/com/googlecode/android_scripting/interpreter/shell/ShellInterpreter.java
+++ b/Common/src/com/googlecode/android_scripting/interpreter/shell/ShellInterpreter.java
@@ -24,7 +24,6 @@
 /**
  * Represents the shell.
  *
- * @author Damon Kohler (damonkohler@gmail.com)
  */
 public class ShellInterpreter extends Interpreter {
   private final static String SHELL_BIN = "/system/bin/sh";
diff --git a/Common/src/com/googlecode/android_scripting/jsonrpc/JsonBuilder.java b/Common/src/com/googlecode/android_scripting/jsonrpc/JsonBuilder.java
index 1892b74..11c4426 100644
--- a/Common/src/com/googlecode/android_scripting/jsonrpc/JsonBuilder.java
+++ b/Common/src/com/googlecode/android_scripting/jsonrpc/JsonBuilder.java
@@ -408,7 +408,7 @@
             }
         }
         result.put("manufacturerSpecificDataList", manufacturerDataList);
-        result.put("manufacturereIdList", idList);
+        result.put("manufacturerIdList", idList);
         ArrayList<String> serviceUuidList = new ArrayList<String>();
         ArrayList<String> serviceDataList = new ArrayList<String>();
         if (scanResult.getScanRecord().getServiceData() != null) {
diff --git a/Common/src/com/googlecode/android_scripting/jsonrpc/JsonRpcResult.java b/Common/src/com/googlecode/android_scripting/jsonrpc/JsonRpcResult.java
index b9f3d67..22ca065 100644
--- a/Common/src/com/googlecode/android_scripting/jsonrpc/JsonRpcResult.java
+++ b/Common/src/com/googlecode/android_scripting/jsonrpc/JsonRpcResult.java
@@ -24,7 +24,6 @@
  *
  * @see http://json-rpc.org/wiki/specification
  *
- * @author Damon Kohler (damonkohler@gmail.com)
  */
 public class JsonRpcResult {
 
diff --git a/Common/src/com/googlecode/android_scripting/jsonrpc/JsonRpcServer.java b/Common/src/com/googlecode/android_scripting/jsonrpc/JsonRpcServer.java
index 5bdd99a..4234807 100644
--- a/Common/src/com/googlecode/android_scripting/jsonrpc/JsonRpcServer.java
+++ b/Common/src/com/googlecode/android_scripting/jsonrpc/JsonRpcServer.java
@@ -32,7 +32,6 @@
 /**
  * A JSON RPC server that forwards RPC calls to a specified receiver object.
  *
- * @author Damon Kohler (damonkohler@gmail.com)
  */
 public class JsonRpcServer extends SimpleServer {
 
diff --git a/Common/src/com/googlecode/android_scripting/language/BeanShellLanguage.java b/Common/src/com/googlecode/android_scripting/language/BeanShellLanguage.java
index b92d502..91ff3db 100644
--- a/Common/src/com/googlecode/android_scripting/language/BeanShellLanguage.java
+++ b/Common/src/com/googlecode/android_scripting/language/BeanShellLanguage.java
@@ -21,7 +21,6 @@
 /**
  * Represents the BeanShell programming language.
  *
- * @author igor.v.karp@gmail.com (Igor Karp)
  */
 public class BeanShellLanguage extends Language {
 
diff --git a/Common/src/com/googlecode/android_scripting/language/JavaScriptLanguage.java b/Common/src/com/googlecode/android_scripting/language/JavaScriptLanguage.java
index 7e88d3c..172b57a 100644
--- a/Common/src/com/googlecode/android_scripting/language/JavaScriptLanguage.java
+++ b/Common/src/com/googlecode/android_scripting/language/JavaScriptLanguage.java
@@ -19,7 +19,6 @@
 /**
  * Represents the JavaScript programming language.
  *
- * @author igor.v.karp@gmail.com (Igor Karp)
  */
 public class JavaScriptLanguage extends Language {
 
diff --git a/Common/src/com/googlecode/android_scripting/language/Language.java b/Common/src/com/googlecode/android_scripting/language/Language.java
index 0a8d487..d8e4f16 100644
--- a/Common/src/com/googlecode/android_scripting/language/Language.java
+++ b/Common/src/com/googlecode/android_scripting/language/Language.java
@@ -25,7 +25,6 @@
 /**
  * Represents the programming language supported by the SL4A.
  *
- * @author igor.v.karp@gmail.com (Igor Karp)
  */
 public class Language {
 
diff --git a/Common/src/com/googlecode/android_scripting/language/LuaLanguage.java b/Common/src/com/googlecode/android_scripting/language/LuaLanguage.java
index a279434..1f4c243 100644
--- a/Common/src/com/googlecode/android_scripting/language/LuaLanguage.java
+++ b/Common/src/com/googlecode/android_scripting/language/LuaLanguage.java
@@ -19,7 +19,6 @@
 /**
  * Represents the Lua programming language.
  *
- * @author igor.v.karp@gmail.com (Igor Karp)
  */
 public class LuaLanguage extends Language {
 
diff --git a/Common/src/com/googlecode/android_scripting/language/PerlLanguage.java b/Common/src/com/googlecode/android_scripting/language/PerlLanguage.java
index c5cca0b..9471594 100644
--- a/Common/src/com/googlecode/android_scripting/language/PerlLanguage.java
+++ b/Common/src/com/googlecode/android_scripting/language/PerlLanguage.java
@@ -19,7 +19,6 @@
 /**
  * Represents the Perl programming language.
  *
- * @author igor.v.karp@gmail.com (Igor Karp)
  */
 public class PerlLanguage extends Language {
 
diff --git a/Common/src/com/googlecode/android_scripting/language/PhpLanguage.java b/Common/src/com/googlecode/android_scripting/language/PhpLanguage.java
index a141a3c..b8f0940 100644
--- a/Common/src/com/googlecode/android_scripting/language/PhpLanguage.java
+++ b/Common/src/com/googlecode/android_scripting/language/PhpLanguage.java
@@ -19,7 +19,6 @@
 /**
  * Represents the PHP programming language.
  *
- * @author ivan@irontec.com (Ivan Mosquera Paulo)
  */
 public class PhpLanguage extends Language {
 
diff --git a/Common/src/com/googlecode/android_scripting/language/PythonLanguage.java b/Common/src/com/googlecode/android_scripting/language/PythonLanguage.java
index beb59ae..df69506 100644
--- a/Common/src/com/googlecode/android_scripting/language/PythonLanguage.java
+++ b/Common/src/com/googlecode/android_scripting/language/PythonLanguage.java
@@ -19,7 +19,6 @@
 /**
  * Represents the Python programming language.
  *
- * @author igor.v.karp@gmail.com (Igor Karp)
  */
 public class PythonLanguage extends Language {
 
diff --git a/Common/src/com/googlecode/android_scripting/language/RubyLanguage.java b/Common/src/com/googlecode/android_scripting/language/RubyLanguage.java
index d6cd189..5ff5b36 100644
--- a/Common/src/com/googlecode/android_scripting/language/RubyLanguage.java
+++ b/Common/src/com/googlecode/android_scripting/language/RubyLanguage.java
@@ -19,7 +19,6 @@
 /**
  * Represents the Ruby programming language.
  *
- * @author igor.v.karp@gmail.com (Igor Karp)
  */
 public class RubyLanguage extends Language {
 
diff --git a/Common/src/com/googlecode/android_scripting/language/ShellLanguage.java b/Common/src/com/googlecode/android_scripting/language/ShellLanguage.java
index d7bc5a2..102fd80 100644
--- a/Common/src/com/googlecode/android_scripting/language/ShellLanguage.java
+++ b/Common/src/com/googlecode/android_scripting/language/ShellLanguage.java
@@ -19,7 +19,6 @@
 /**
  * Represents the Shell programming language.
  *
- * @author igor.v.karp@gmail.com (Igor Karp)
  */
 public class ShellLanguage extends Language {
 }
diff --git a/Common/src/com/googlecode/android_scripting/language/SleepLanguage.java b/Common/src/com/googlecode/android_scripting/language/SleepLanguage.java
index 1b623ab..2fce6ef 100644
--- a/Common/src/com/googlecode/android_scripting/language/SleepLanguage.java
+++ b/Common/src/com/googlecode/android_scripting/language/SleepLanguage.java
@@ -19,7 +19,6 @@
 /**
  * Represents the Sleep programming language.
  *
- * @author tomcatalbino@gmail.com
  */
 public class SleepLanguage extends Language {
 
diff --git a/Common/src/com/googlecode/android_scripting/language/SquirrelLanguage.java b/Common/src/com/googlecode/android_scripting/language/SquirrelLanguage.java
index f9b25bf..2cabc9d 100644
--- a/Common/src/com/googlecode/android_scripting/language/SquirrelLanguage.java
+++ b/Common/src/com/googlecode/android_scripting/language/SquirrelLanguage.java
@@ -20,7 +20,6 @@
  * Represents the Squirrel programming language, by Alberto Demichelis
  * this file adapted by Andy Tai, atai@atai.org
  * based on the Python version by
- * @author igor.v.karp@gmail.com (Igor Karp)
  */
 public class SquirrelLanguage extends Language {
 
diff --git a/Common/src/com/googlecode/android_scripting/language/TclLanguage.java b/Common/src/com/googlecode/android_scripting/language/TclLanguage.java
index 52b8532..a745c76 100644
--- a/Common/src/com/googlecode/android_scripting/language/TclLanguage.java
+++ b/Common/src/com/googlecode/android_scripting/language/TclLanguage.java
@@ -19,7 +19,6 @@
 /**
  * Represents the Tcl programming language.
  *
- * @author igor.v.karp@gmail.com (Igor Karp)
  */
 public class TclLanguage extends Language {
 
diff --git a/Common/src/com/googlecode/android_scripting/rpc/Converter.java b/Common/src/com/googlecode/android_scripting/rpc/Converter.java
index 274d838..2691602 100644
--- a/Common/src/com/googlecode/android_scripting/rpc/Converter.java
+++ b/Common/src/com/googlecode/android_scripting/rpc/Converter.java
@@ -20,7 +20,6 @@
  * A converter can take a String and turn it into an instance of type T (the type parameter to the
  * converter).
  *
- * @author igor.v.karp@gmail.com (Igor Karp)
  */
 public interface Converter<T> {
 
diff --git a/Common/src/com/googlecode/android_scripting/rpc/MethodDescriptor.java b/Common/src/com/googlecode/android_scripting/rpc/MethodDescriptor.java
index 285e98b..63ce60c 100644
--- a/Common/src/com/googlecode/android_scripting/rpc/MethodDescriptor.java
+++ b/Common/src/com/googlecode/android_scripting/rpc/MethodDescriptor.java
@@ -44,7 +44,6 @@
 /**
  * An adapter that wraps {@code Method}.
  *
- * @author igor.v.karp@gmail.com (Igor Karp)
  */
 public final class MethodDescriptor {
   private static final Map<Class<?>, Converter<?>> sConverters = populateConverters();
diff --git a/Common/src/com/googlecode/android_scripting/rpc/ParameterDescriptor.java b/Common/src/com/googlecode/android_scripting/rpc/ParameterDescriptor.java
index 021373c..52d4719 100644
--- a/Common/src/com/googlecode/android_scripting/rpc/ParameterDescriptor.java
+++ b/Common/src/com/googlecode/android_scripting/rpc/ParameterDescriptor.java
@@ -21,7 +21,6 @@
 /**
  * RPC parameter description.
  *
- * @author igor.v.karp@gmail.com (Igor Karp)
  */
 public final class ParameterDescriptor {
   private final String value;
diff --git a/Common/src/com/googlecode/android_scripting/rpc/RpcDefault.java b/Common/src/com/googlecode/android_scripting/rpc/RpcDefault.java
index b27bccc..71ec3e8 100644
--- a/Common/src/com/googlecode/android_scripting/rpc/RpcDefault.java
+++ b/Common/src/com/googlecode/android_scripting/rpc/RpcDefault.java
@@ -25,7 +25,6 @@
 /**
  * Use this annotation to mark an RPC parameter that have a default value.
  *
- * @author igor.v.karp@gmail.com (Igor Karp)
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Target(ElementType.PARAMETER)
diff --git a/Common/src/com/googlecode/android_scripting/rpc/RpcName.java b/Common/src/com/googlecode/android_scripting/rpc/RpcName.java
index b0992e6..e44652d 100644
--- a/Common/src/com/googlecode/android_scripting/rpc/RpcName.java
+++ b/Common/src/com/googlecode/android_scripting/rpc/RpcName.java
@@ -25,7 +25,6 @@
 /**
  * Use this annotation to mark an RPC parameter that have a default value.
  *
- * @author igor.v.karp@gmail.com (Igor Karp)
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Target(ElementType.METHOD)
diff --git a/Common/src/com/googlecode/android_scripting/rpc/RpcOptional.java b/Common/src/com/googlecode/android_scripting/rpc/RpcOptional.java
index 53ac650..35b5a1d 100644
--- a/Common/src/com/googlecode/android_scripting/rpc/RpcOptional.java
+++ b/Common/src/com/googlecode/android_scripting/rpc/RpcOptional.java
@@ -29,7 +29,6 @@
  * The parameter marked as optional has no explicit default value. {@code null} is used as default
  * value.
  *
- * @author igor.v.karp@gmail.com (Igor Karp)
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Target(ElementType.PARAMETER)
diff --git a/Common/src/com/googlecode/android_scripting/rpc/RpcParameter.java b/Common/src/com/googlecode/android_scripting/rpc/RpcParameter.java
index eb84879..4143224 100644
--- a/Common/src/com/googlecode/android_scripting/rpc/RpcParameter.java
+++ b/Common/src/com/googlecode/android_scripting/rpc/RpcParameter.java
@@ -25,7 +25,6 @@
 /**
  * An annotation that is used to document the parameters of an RPC.
  *
- * @author Felix Arends (felix.arends@gmail.com)
  *
  */
 @Retention(RetentionPolicy.RUNTIME)
diff --git a/Common/src/com/googlecode/android_scripting/rpc/RpcStartEvent.java b/Common/src/com/googlecode/android_scripting/rpc/RpcStartEvent.java
index 68a5af3..55b0cf3 100644
--- a/Common/src/com/googlecode/android_scripting/rpc/RpcStartEvent.java
+++ b/Common/src/com/googlecode/android_scripting/rpc/RpcStartEvent.java
@@ -25,7 +25,6 @@
 /**
  * Use this annotation to mark an RPC as one that starts generating events.
  *
- * @author damonkohler@gmail.com (Damon Kohler)
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Target(ElementType.METHOD)
diff --git a/Common/src/com/googlecode/android_scripting/rpc/RpcStopEvent.java b/Common/src/com/googlecode/android_scripting/rpc/RpcStopEvent.java
index fce25f9..d997575 100644
--- a/Common/src/com/googlecode/android_scripting/rpc/RpcStopEvent.java
+++ b/Common/src/com/googlecode/android_scripting/rpc/RpcStopEvent.java
@@ -25,7 +25,6 @@
 /**
  * Use this annotation to mark an RPC as one that stops generating events.
  *
- * @author damonkohler@gmail.com (Damon Kohler)
  */
 @Retention(RetentionPolicy.RUNTIME)
 @Target(ElementType.METHOD)
diff --git a/Common/src/com/googlecode/android_scripting/trigger/ScriptTrigger.java b/Common/src/com/googlecode/android_scripting/trigger/ScriptTrigger.java
index 76640fe..95aa3d5 100644
--- a/Common/src/com/googlecode/android_scripting/trigger/ScriptTrigger.java
+++ b/Common/src/com/googlecode/android_scripting/trigger/ScriptTrigger.java
@@ -27,7 +27,6 @@
 /**
  * A trigger implementation that launches a given script when the event occurs.
  *
- * @author Felix Arends (felix.arends@gmail.com)
  */
 public class ScriptTrigger implements Trigger {
   private static final long serialVersionUID = 1804599219214041409L;
diff --git a/Common/src/com/googlecode/android_scripting/trigger/Trigger.java b/Common/src/com/googlecode/android_scripting/trigger/Trigger.java
index e06a973..4bad632 100644
--- a/Common/src/com/googlecode/android_scripting/trigger/Trigger.java
+++ b/Common/src/com/googlecode/android_scripting/trigger/Trigger.java
@@ -26,7 +26,6 @@
  * Interface implemented by objects listening to events on the event queue inside of the
  * {@link SerivceManager}.
  *
- * @author Felix Arends (felix.arends@gmail.com)
  */
 public interface Trigger extends Serializable {
   /**
diff --git a/Common/src/com/googlecode/android_scripting/trigger/TriggerRepository.java b/Common/src/com/googlecode/android_scripting/trigger/TriggerRepository.java
index 4e42bfc..cfec5b4 100644
--- a/Common/src/com/googlecode/android_scripting/trigger/TriggerRepository.java
+++ b/Common/src/com/googlecode/android_scripting/trigger/TriggerRepository.java
@@ -42,8 +42,6 @@
  * observers of arriving text messages etc. This class is responsible for serializing the list of
  * triggers to the shared preferences store, and retrieving it from there.
  *
- * @author Felix Arends (felix.arends@gmail.com)
- * @author Damon Kohler (damonkohler@gmail.com)
  */
 public class TriggerRepository {
   /**
diff --git a/Common/src/com/googlecode/android_scripting/util/VisibleForTesting.java b/Common/src/com/googlecode/android_scripting/util/VisibleForTesting.java
index cc8f92a..ea954ba 100644
--- a/Common/src/com/googlecode/android_scripting/util/VisibleForTesting.java
+++ b/Common/src/com/googlecode/android_scripting/util/VisibleForTesting.java
@@ -20,7 +20,6 @@
  * An annotation that indicates that the visibility of a type or member has been relaxed from
  * private to package to make the code testable.
  *
- * @author igor.v.karp@gmail.com (Igor Karp)
  */
 // TODO(igor.v.karp): Consider replacing this annotation by one from Guava or GCL
 public @interface VisibleForTesting {
diff --git a/Common/src/com/googlecode/android_scripting/webcam/WebCamFacade.java b/Common/src/com/googlecode/android_scripting/webcam/WebCamFacade.java
index b984828..eef96dc 100644
--- a/Common/src/com/googlecode/android_scripting/webcam/WebCamFacade.java
+++ b/Common/src/com/googlecode/android_scripting/webcam/WebCamFacade.java
@@ -83,8 +83,6 @@
  *<br>
  *<br>The webcam and preview modes use the same resources, so you can't use them both at the same time. Stop one mode before starting the other.
  *
- * @author Damon Kohler (damonkohler@gmail.com) (probably)
- * @author Robbie Matthews (rjmatthews62@gmail.com)
  *
  */
 public class WebCamFacade extends RpcReceiver {
diff --git a/Common/src/org/apache/commons/codec/BinaryDecoder.java b/Common/src/org/apache/commons/codec/BinaryDecoder.java
index 07d93fa..e86aec5 100644
--- a/Common/src/org/apache/commons/codec/BinaryDecoder.java
+++ b/Common/src/org/apache/commons/codec/BinaryDecoder.java
@@ -20,7 +20,6 @@
 /**
  * Defines common decoding methods for byte array decoders.
  *
- * @author Apache Software Foundation
  * @version $Id: BinaryDecoder.java 651573 2008-04-25 11:11:21Z niallp $
  */
 public interface BinaryDecoder extends Decoder {
diff --git a/Common/src/org/apache/commons/codec/BinaryEncoder.java b/Common/src/org/apache/commons/codec/BinaryEncoder.java
index 40bd797..5d84993 100644
--- a/Common/src/org/apache/commons/codec/BinaryEncoder.java
+++ b/Common/src/org/apache/commons/codec/BinaryEncoder.java
@@ -20,7 +20,6 @@
 /**
  * Defines common encoding methods for byte array encoders.
  *
- * @author Apache Software Foundation
  * @version $Id: BinaryEncoder.java 651573 2008-04-25 11:11:21Z niallp $
  */
 public interface BinaryEncoder extends Encoder {
diff --git a/Common/src/org/apache/commons/codec/CharEncoding.java b/Common/src/org/apache/commons/codec/CharEncoding.java
index 01af749..c3ffda8 100644
--- a/Common/src/org/apache/commons/codec/CharEncoding.java
+++ b/Common/src/org/apache/commons/codec/CharEncoding.java
@@ -48,7 +48,6 @@
  * forseen that [codec] would be made to depend on [lang].
  *
  * @see <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/nio/charset/Charset.html">Standard charsets</a>
- * @author Apache Software Foundation
  * @since 1.4
  * @version $Id: CharEncoding.java 797857 2009-07-25 23:43:33Z ggregory $
  */
diff --git a/Common/src/org/apache/commons/codec/Decoder.java b/Common/src/org/apache/commons/codec/Decoder.java
index c4de37a..bf116ef 100644
--- a/Common/src/org/apache/commons/codec/Decoder.java
+++ b/Common/src/org/apache/commons/codec/Decoder.java
@@ -27,7 +27,6 @@
  *
  * <p>One of the two interfaces at the center of the codec package.</p>
  *
- * @author Apache Software Foundation
  * @version $Id: Decoder.java 797690 2009-07-24 23:28:35Z ggregory $
  */
 public interface Decoder {
diff --git a/Common/src/org/apache/commons/codec/DecoderException.java b/Common/src/org/apache/commons/codec/DecoderException.java
index c928086..a8cc91e 100644
--- a/Common/src/org/apache/commons/codec/DecoderException.java
+++ b/Common/src/org/apache/commons/codec/DecoderException.java
@@ -20,7 +20,6 @@
 /**
  * Thrown when a Decoder has encountered a failure condition during a decode.
  *
- * @author Apache Software Foundation
  * @version $Id: DecoderException.java 797804 2009-07-25 17:27:04Z ggregory $
  */
 public class DecoderException extends Exception {
diff --git a/Common/src/org/apache/commons/codec/Encoder.java b/Common/src/org/apache/commons/codec/Encoder.java
index a137e39..48a9742 100644
--- a/Common/src/org/apache/commons/codec/Encoder.java
+++ b/Common/src/org/apache/commons/codec/Encoder.java
@@ -23,7 +23,6 @@
  * Encoder provides this common generic interface whic allows a user to pass a
  * generic Object to any Encoder implementation in the codec package.</p>
  *
- * @author Apache Software Foundation
  * @version $Id: Encoder.java 634915 2008-03-08 09:30:25Z bayard $
  */
 public interface Encoder {
diff --git a/Common/src/org/apache/commons/codec/EncoderException.java b/Common/src/org/apache/commons/codec/EncoderException.java
index 975bb77..aa4b0e9 100644
--- a/Common/src/org/apache/commons/codec/EncoderException.java
+++ b/Common/src/org/apache/commons/codec/EncoderException.java
@@ -22,7 +22,6 @@
  * encounters a encoding specific exception such as invalid data, inability to calculate a checksum, characters outside
  * of the expected range.
  *
- * @author Apache Software Foundation
  * @version $Id: EncoderException.java 797804 2009-07-25 17:27:04Z ggregory $
  */
 public class EncoderException extends Exception {
diff --git a/Common/src/org/apache/commons/codec/binary/Base64Codec.java b/Common/src/org/apache/commons/codec/binary/Base64Codec.java
index 20239e2..dafb784 100644
--- a/Common/src/org/apache/commons/codec/binary/Base64Codec.java
+++ b/Common/src/org/apache/commons/codec/binary/Base64Codec.java
@@ -46,7 +46,6 @@
  * </p>
  *
  * @see <a href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045</a>
- * @author Apache Software Foundation
  * @since 1.0
  * @version $Id: Base64.java 801706 2009-08-06 16:27:06Z niallp $
  */
diff --git a/Common/src/org/apache/commons/codec/binary/StringUtils.java b/Common/src/org/apache/commons/codec/binary/StringUtils.java
index e3af657..1f680f2 100644
--- a/Common/src/org/apache/commons/codec/binary/StringUtils.java
+++ b/Common/src/org/apache/commons/codec/binary/StringUtils.java
@@ -27,7 +27,6 @@
  *
  * @see CharEncoding
  * @see <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/nio/charset/Charset.html">Standard charsets</a>
- * @author <a href="mailto:ggregory@seagullsw.com">Gary Gregory</a>
  * @version $Id: StringUtils.java 801391 2009-08-05 19:55:54Z ggregory $
  * @since 1.4
  */
diff --git a/InterpreterForAndroid/src/com/googlecode/android_scripting/AsyncTaskListener.java b/InterpreterForAndroid/src/com/googlecode/android_scripting/AsyncTaskListener.java
index 38bb34b..d15127a 100644
--- a/InterpreterForAndroid/src/com/googlecode/android_scripting/AsyncTaskListener.java
+++ b/InterpreterForAndroid/src/com/googlecode/android_scripting/AsyncTaskListener.java
@@ -20,7 +20,6 @@
  * This listener asynchronously receives a task result whenever it finishes. Should be implemented
  * to avoid blocking on task's get() method.
  *
- * @author Alexey Reznichenko (alexey.reznichenko@gmail.com)
  */
 public interface AsyncTaskListener<T> {
   public void onTaskFinished(T result, String message);
diff --git a/InterpreterForAndroid/src/com/googlecode/android_scripting/InterpreterInstaller.java b/InterpreterForAndroid/src/com/googlecode/android_scripting/InterpreterInstaller.java
index 53a1d6c..28275af 100644
--- a/InterpreterForAndroid/src/com/googlecode/android_scripting/InterpreterInstaller.java
+++ b/InterpreterForAndroid/src/com/googlecode/android_scripting/InterpreterInstaller.java
@@ -38,8 +38,6 @@
 /**
  * AsyncTask for installing interpreters.
  *
- * @author Damon Kohler (damonkohler@gmail.com)
- * @author Alexey Reznichenko (alexey.reznichenko@gmail.com)
  */
 public abstract class InterpreterInstaller extends AsyncTask<Void, Void, Boolean> {
 
diff --git a/InterpreterForAndroid/src/com/googlecode/android_scripting/InterpreterUninstaller.java b/InterpreterForAndroid/src/com/googlecode/android_scripting/InterpreterUninstaller.java
index 5d0c17f..fa3988c 100644
--- a/InterpreterForAndroid/src/com/googlecode/android_scripting/InterpreterUninstaller.java
+++ b/InterpreterForAndroid/src/com/googlecode/android_scripting/InterpreterUninstaller.java
@@ -36,8 +36,6 @@
 /**
  * AsyncTask for uninstalling interpreters.
  *
- * @author Damon Kohler (damonkohler@gmail.com)
- * @author Alexey Reznichenko (alexey.reznichenko@gmail.com)
  */
 public abstract class InterpreterUninstaller extends AsyncTask<Void, Void, Boolean> {
 
diff --git a/InterpreterForAndroid/src/com/googlecode/android_scripting/UrlDownloaderTask.java b/InterpreterForAndroid/src/com/googlecode/android_scripting/UrlDownloaderTask.java
index f9ba053..ae79fe8 100644
--- a/InterpreterForAndroid/src/com/googlecode/android_scripting/UrlDownloaderTask.java
+++ b/InterpreterForAndroid/src/com/googlecode/android_scripting/UrlDownloaderTask.java
@@ -38,8 +38,6 @@
 /**
  * AsyncTask for extracting ZIP files.
  *
- * @author Damon Kohler (damonkohler@gmail.com)
- * @author Alexey Reznichenko (alexey.reznichenko@gmail.com)
  */
 public class UrlDownloaderTask extends AsyncTask<Void, Integer, Long> {
 
diff --git a/InterpreterForAndroid/src/com/googlecode/android_scripting/ZipExtractorTask.java b/InterpreterForAndroid/src/com/googlecode/android_scripting/ZipExtractorTask.java
index 3d7eb01..e2afb38 100644
--- a/InterpreterForAndroid/src/com/googlecode/android_scripting/ZipExtractorTask.java
+++ b/InterpreterForAndroid/src/com/googlecode/android_scripting/ZipExtractorTask.java
@@ -37,8 +37,6 @@
 /**
  * AsyncTask for extracting ZIP files.
  *
- * @author Damon Kohler (damonkohler@gmail.com)
- * @author Alexey Reznichenko (alexey.reznichenko@gmail.com)
  */
 public class ZipExtractorTask extends AsyncTask<Void, Integer, Long> {
 
diff --git a/InterpreterForAndroid/src/com/googlecode/android_scripting/activity/Main.java b/InterpreterForAndroid/src/com/googlecode/android_scripting/activity/Main.java
index 2af4d17..ac8d7e6 100644
--- a/InterpreterForAndroid/src/com/googlecode/android_scripting/activity/Main.java
+++ b/InterpreterForAndroid/src/com/googlecode/android_scripting/activity/Main.java
@@ -43,8 +43,6 @@
 /**
  * Base activity for distributing interpreters as APK's.
  *
- * @author Damon Kohler (damonkohler@gmail.com)
- * @author Alexey Reznichenko (alexey.reznichenko@gmail.com)
  */
 public abstract class Main extends Activity {
 
diff --git a/InterpreterForAndroid/src/com/googlecode/android_scripting/interpreter/InterpreterProvider.java b/InterpreterForAndroid/src/com/googlecode/android_scripting/interpreter/InterpreterProvider.java
index 500c5d4..b2d2a5e 100644
--- a/InterpreterForAndroid/src/com/googlecode/android_scripting/interpreter/InterpreterProvider.java
+++ b/InterpreterForAndroid/src/com/googlecode/android_scripting/interpreter/InterpreterProvider.java
@@ -39,7 +39,6 @@
  * Please declare the provider in the android manifest xml (the authority values has to be set to
  * your_package_name.provider_name).
  *
- * @author Alexey Reznichenko (alexey.reznichenko@gmail.com)
  */
 public abstract class InterpreterProvider extends ContentProvider {
 
diff --git a/InterpreterForAndroid/src/com/googlecode/android_scripting/interpreter/Sl4aHostedInterpreter.java b/InterpreterForAndroid/src/com/googlecode/android_scripting/interpreter/Sl4aHostedInterpreter.java
index e6ca41c..13bd60f 100644
--- a/InterpreterForAndroid/src/com/googlecode/android_scripting/interpreter/Sl4aHostedInterpreter.java
+++ b/InterpreterForAndroid/src/com/googlecode/android_scripting/interpreter/Sl4aHostedInterpreter.java
@@ -27,8 +27,6 @@
 /**
  * A description of the interpreters hosted by the SL4A project.
  *
- * @author Damon Kohler (damonkohler@gmail.com)
- * @author Alexey Reznichenko (alexey.reznichenko@gmail.com)
  */
 public abstract class Sl4aHostedInterpreter implements InterpreterDescriptor {
 
diff --git a/ScriptingLayer/src/com/googlecode/android_scripting/ScriptStorageAdapter.java b/ScriptingLayer/src/com/googlecode/android_scripting/ScriptStorageAdapter.java
index 96608c1..68ce934 100644
--- a/ScriptingLayer/src/com/googlecode/android_scripting/ScriptStorageAdapter.java
+++ b/ScriptingLayer/src/com/googlecode/android_scripting/ScriptStorageAdapter.java
@@ -35,7 +35,6 @@
 /**
  * Manages storage and retrieval of scripts on the file system.
  *
- * @author Damon Kohler (damonkohler@gmail.com)
  */
 public class ScriptStorageAdapter {
 
diff --git a/ScriptingLayer/src/com/googlecode/android_scripting/facade/FacadeConfiguration.java b/ScriptingLayer/src/com/googlecode/android_scripting/facade/FacadeConfiguration.java
index 8774ae9..420fffb 100644
--- a/ScriptingLayer/src/com/googlecode/android_scripting/facade/FacadeConfiguration.java
+++ b/ScriptingLayer/src/com/googlecode/android_scripting/facade/FacadeConfiguration.java
@@ -38,6 +38,7 @@
 import com.googlecode.android_scripting.facade.bluetooth.BluetoothLeAdvertiseFacade;
 import com.googlecode.android_scripting.facade.bluetooth.BluetoothLeScanFacade;
 import com.googlecode.android_scripting.facade.bluetooth.BluetoothMapFacade;
+import com.googlecode.android_scripting.facade.bluetooth.BluetoothPanFacade;
 import com.googlecode.android_scripting.facade.bluetooth.BluetoothRfcommFacade;
 import com.googlecode.android_scripting.facade.bluetooth.GattClientFacade;
 import com.googlecode.android_scripting.facade.bluetooth.GattServerFacade;
@@ -116,6 +117,7 @@
         sFacadeClassList.add(BluetoothHspFacade.class);
         sFacadeClassList.add(BluetoothHidFacade.class);
         sFacadeClassList.add(BluetoothMapFacade.class);
+        sFacadeClassList.add(BluetoothPanFacade.class);
         sFacadeClassList.add(BluetoothRfcommFacade.class);
         sFacadeClassList.add(WebCamFacade.class);
         sFacadeClassList.add(WifiP2pManagerFacade.class);
diff --git a/ScriptingLayer/src/com/googlecode/android_scripting/interpreter/InterpreterProcess.java b/ScriptingLayer/src/com/googlecode/android_scripting/interpreter/InterpreterProcess.java
index 52a12c0..619f412 100644
--- a/ScriptingLayer/src/com/googlecode/android_scripting/interpreter/InterpreterProcess.java
+++ b/ScriptingLayer/src/com/googlecode/android_scripting/interpreter/InterpreterProcess.java
@@ -29,7 +29,6 @@
 /**
  * This is a skeletal implementation of an interpreter process.
  *
- * @author Damon Kohler (damonkohler@gmail.com)
  */
 public class InterpreterProcess extends Process {
 
diff --git a/ScriptingLayer/src/com/googlecode/android_scripting/trigger/EventGenerationControllingObserver.java b/ScriptingLayer/src/com/googlecode/android_scripting/trigger/EventGenerationControllingObserver.java
index 0c38a0f..60d038e 100644
--- a/ScriptingLayer/src/com/googlecode/android_scripting/trigger/EventGenerationControllingObserver.java
+++ b/ScriptingLayer/src/com/googlecode/android_scripting/trigger/EventGenerationControllingObserver.java
@@ -30,7 +30,6 @@
  * A {@link TriggerRepositoryObserver} that starts and stops the monitoring of events depending on
  * whether or not triggers for the event exist.
  *
- * @author Felix Arends (felix.arends@gmail.com)
  */
 public class EventGenerationControllingObserver implements TriggerRepositoryObserver {
   private final FacadeManager mFacadeManager;
diff --git a/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ApiPrompt.java b/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ApiPrompt.java
index e9655a2..504e1f9 100644
--- a/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ApiPrompt.java
+++ b/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ApiPrompt.java
@@ -44,7 +44,6 @@
  * This activity is started by {@link ApiBrowser} to prompt user for RPC call parameters.
  * Input/output interface is RPC name and explicit parameter values.
  *
- * @author igor.v.karp@gmail.com (Igor Karp)
  */
 public class ApiPrompt extends Activity {
   private MethodDescriptor mRpc;
diff --git a/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/InterpreterPicker.java b/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/InterpreterPicker.java
index 79145d5..d708810 100644
--- a/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/InterpreterPicker.java
+++ b/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/InterpreterPicker.java
@@ -44,7 +44,6 @@
 /**
  * Presents available scripts and returns the selected one.
  *
- * @author Damon Kohler (damonkohler@gmail.com)
  */
 public class InterpreterPicker extends ListActivity {
 
diff --git a/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ScriptEditor.java b/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ScriptEditor.java
index b83720e..9d43536 100644
--- a/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ScriptEditor.java
+++ b/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ScriptEditor.java
@@ -63,7 +63,6 @@
 /**
  * A text editor for scripts.
  *
- * @author Damon Kohler (damonkohler@gmail.com)
  */
 public class ScriptEditor extends Activity implements OnClickListener {
   private static final int DIALOG_FIND_REPLACE = 2;
diff --git a/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ScriptManager.java b/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ScriptManager.java
index 9cc7c97..3d4504d 100644
--- a/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ScriptManager.java
+++ b/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ScriptManager.java
@@ -71,7 +71,6 @@
 /**
  * Manages creation, deletion, and execution of stored scripts.
  *
- * @author Damon Kohler (damonkohler@gmail.com)
  */
 public class ScriptManager extends ListActivity {
 
diff --git a/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ScriptPicker.java b/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ScriptPicker.java
index 9385382..a6acdbf 100644
--- a/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ScriptPicker.java
+++ b/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ScriptPicker.java
@@ -43,7 +43,6 @@
 /**
  * Presents available scripts and returns the selected one.
  *
- * @author Damon Kohler (damonkohler@gmail.com)
  */
 public class ScriptPicker extends ListActivity {
 
diff --git a/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ScriptProcessMonitor.java b/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ScriptProcessMonitor.java
index 614890a..47aeeac 100644
--- a/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ScriptProcessMonitor.java
+++ b/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ScriptProcessMonitor.java
@@ -49,7 +49,6 @@
 /**
  * An activity that allows to monitor running scripts.
  *
- * @author Alexey Reznichenko (alexey.reznichenko@gmail.com)
  */
 public class ScriptProcessMonitor extends ListActivity {
 
diff --git a/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ScriptingLayerService.java b/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ScriptingLayerService.java
index 80b7aae..5b71d05 100644
--- a/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ScriptingLayerService.java
+++ b/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ScriptingLayerService.java
@@ -55,7 +55,6 @@
 /**
  * A service that allows scripts and the RPC server to run in the background.
  *
- * @author Damon Kohler (damonkohler@gmail.com)
  */
 public class ScriptingLayerService extends ForegroundService {
   private static final int NOTIFICATION_ID = NotificationIdFactory.create();
diff --git a/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ServiceUtils.java b/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ServiceUtils.java
index ddb5937..8d36657 100644
--- a/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ServiceUtils.java
+++ b/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/ServiceUtils.java
@@ -29,7 +29,6 @@
 /**
  * A utility class supplying helper methods for {@link Service} objects.
  *
- * @author Felix Arends (felix.arends@gmail.com)
  */
 public class ServiceUtils {
   private ServiceUtils() {
diff --git a/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/TriggerService.java b/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/TriggerService.java
index 8024533..3210334 100644
--- a/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/TriggerService.java
+++ b/ScriptingLayerForAndroid/src/com/googlecode/android_scripting/activity/TriggerService.java
@@ -51,8 +51,6 @@
  * When no triggers are installed the service shuts down silently as to not consume resources
  * unnecessarily.
  *
- * @author Felix Arends (felix.arends@gmail.com)
- * @author Damon Kohler (damonkohler@gmail.com)
  */
 public class TriggerService extends ForegroundService {
   private static final int NOTIFICATION_ID = NotificationIdFactory.create();
diff --git a/ScriptingLayerForAndroid/src/de/mud/terminal/Precomposer.java b/ScriptingLayerForAndroid/src/de/mud/terminal/Precomposer.java
index edad64c..f82461f 100644
--- a/ScriptingLayerForAndroid/src/de/mud/terminal/Precomposer.java
+++ b/ScriptingLayerForAndroid/src/de/mud/terminal/Precomposer.java
@@ -18,7 +18,6 @@
 package de.mud.terminal;
 
 /**
- * @author Kenny Root
  * This data was taken from xterm's precompose.c
  */
 public class Precomposer {
diff --git a/ScriptingLayerForAndroid/src/de/mud/terminal/VDUBuffer.java b/ScriptingLayerForAndroid/src/de/mud/terminal/VDUBuffer.java
index 58cf20b..65e769c 100644
--- a/ScriptingLayerForAndroid/src/de/mud/terminal/VDUBuffer.java
+++ b/ScriptingLayerForAndroid/src/de/mud/terminal/VDUBuffer.java
@@ -32,7 +32,6 @@
  * manipulate the buffer that stores characters and their attributes as well as the regions
  * displayed.
  *
- * @author Matthias L. Jugel, Marcus Meißner
  * @version $Id: VDUBuffer.java 503 2005-10-24 07:34:13Z marcus $
  */
 public class VDUBuffer {
diff --git a/ScriptingLayerForAndroid/src/de/mud/terminal/VDUInput.java b/ScriptingLayerForAndroid/src/de/mud/terminal/VDUInput.java
index 43c88de..86a0978 100644
--- a/ScriptingLayerForAndroid/src/de/mud/terminal/VDUInput.java
+++ b/ScriptingLayerForAndroid/src/de/mud/terminal/VDUInput.java
@@ -29,7 +29,6 @@
 /**
  * An interface for a terminal that accepts input from keyboard and mouse.
  *
- * @author Matthias L. Jugel, Marcus Meißner
  * @version $Id: VDUInput.java 499 2005-09-29 08:24:54Z leo $
  */
 public interface VDUInput {
diff --git a/ScriptingLayerForAndroid/src/de/mud/terminal/vt320.java b/ScriptingLayerForAndroid/src/de/mud/terminal/vt320.java
index b713228..90b3207 100644
--- a/ScriptingLayerForAndroid/src/de/mud/terminal/vt320.java
+++ b/ScriptingLayerForAndroid/src/de/mud/terminal/vt320.java
@@ -33,7 +33,6 @@
  * <B>Maintainer:</B> Marcus Meißner
  *
  * @version $Id: vt320.java 507 2005-10-25 10:14:52Z marcus $
- * @author Matthias L. Jugel, Marcus Meißner
  */
 @SuppressWarnings("unused")
 public abstract class vt320 extends VDUBuffer implements VDUInput {
diff --git a/ScriptingLayerForAndroid/src/org/connectbot/ConsoleActivity.java b/ScriptingLayerForAndroid/src/org/connectbot/ConsoleActivity.java
index bb4490a..da2d1a4 100644
--- a/ScriptingLayerForAndroid/src/org/connectbot/ConsoleActivity.java
+++ b/ScriptingLayerForAndroid/src/org/connectbot/ConsoleActivity.java
@@ -16,7 +16,6 @@
  */
 
 /**
- * @author modified by raaar
  *
  */
 
diff --git a/ScriptingLayerForAndroid/src/org/connectbot/HelpActivity.java b/ScriptingLayerForAndroid/src/org/connectbot/HelpActivity.java
index 0ec485e..fdf903f 100644
--- a/ScriptingLayerForAndroid/src/org/connectbot/HelpActivity.java
+++ b/ScriptingLayerForAndroid/src/org/connectbot/HelpActivity.java
@@ -35,7 +35,6 @@
 import java.io.IOException;
 
 /**
- * @author Kenny Root
  *
  */
 public class HelpActivity extends Activity {
diff --git a/ScriptingLayerForAndroid/src/org/connectbot/HelpTopicActivity.java b/ScriptingLayerForAndroid/src/org/connectbot/HelpTopicActivity.java
index 6453607..182085f 100644
--- a/ScriptingLayerForAndroid/src/org/connectbot/HelpTopicActivity.java
+++ b/ScriptingLayerForAndroid/src/org/connectbot/HelpTopicActivity.java
@@ -26,7 +26,6 @@
 import org.connectbot.util.HelpTopicView;
 
 /**
- * @author Kenny Root
  *
  */
 public class HelpTopicActivity extends Activity {
diff --git a/ScriptingLayerForAndroid/src/org/connectbot/TerminalView.java b/ScriptingLayerForAndroid/src/org/connectbot/TerminalView.java
index dfe231b..a23b332 100644
--- a/ScriptingLayerForAndroid/src/org/connectbot/TerminalView.java
+++ b/ScriptingLayerForAndroid/src/org/connectbot/TerminalView.java
@@ -41,7 +41,6 @@
 /**
  * User interface {@link View} for showing a TerminalBridge in an {@link Activity}. Handles drawing
  * bitmap updates and passing keystrokes down to terminal.
- * @author jsharkey
  */
 public class TerminalView extends View implements FontSizeChangedListener {
 
diff --git a/ScriptingLayerForAndroid/src/org/connectbot/service/FontSizeChangedListener.java b/ScriptingLayerForAndroid/src/org/connectbot/service/FontSizeChangedListener.java
index eb1c33d..0216d39 100644
--- a/ScriptingLayerForAndroid/src/org/connectbot/service/FontSizeChangedListener.java
+++ b/ScriptingLayerForAndroid/src/org/connectbot/service/FontSizeChangedListener.java
@@ -18,7 +18,6 @@
 package org.connectbot.service;
 
 /**
- * @author Kenny Root
  *
  */
 public interface FontSizeChangedListener {
diff --git a/ScriptingLayerForAndroid/src/org/connectbot/service/PromptHelper.java b/ScriptingLayerForAndroid/src/org/connectbot/service/PromptHelper.java
index f0a37be..b63ad47 100644
--- a/ScriptingLayerForAndroid/src/org/connectbot/service/PromptHelper.java
+++ b/ScriptingLayerForAndroid/src/org/connectbot/service/PromptHelper.java
@@ -26,7 +26,6 @@
  * Helps provide a relay for prompts and responses between a possible user
  * interface and some underlying service.
  *
- * @author jsharkey
  */
 public class PromptHelper {
 	private final Object tag;
diff --git a/ScriptingLayerForAndroid/src/org/connectbot/service/Relay.java b/ScriptingLayerForAndroid/src/org/connectbot/service/Relay.java
index 0925321..594b554 100644
--- a/ScriptingLayerForAndroid/src/org/connectbot/service/Relay.java
+++ b/ScriptingLayerForAndroid/src/org/connectbot/service/Relay.java
@@ -34,7 +34,6 @@
 import java.nio.charset.CodingErrorAction;
 
 /**
- * @author Kenny Root
  */
 public class Relay implements Runnable {
 
diff --git a/ScriptingLayerForAndroid/src/org/connectbot/service/TerminalBridge.java b/ScriptingLayerForAndroid/src/org/connectbot/service/TerminalBridge.java
index 9a5936b..9e5f453 100644
--- a/ScriptingLayerForAndroid/src/org/connectbot/service/TerminalBridge.java
+++ b/ScriptingLayerForAndroid/src/org/connectbot/service/TerminalBridge.java
@@ -60,8 +60,6 @@
  * allows us to keep the TerminalBridge running in a background service. A TerminalView shares down
  * a bitmap that we can use for rendering when available.
  *
- * @author ConnectBot Dev Team
- * @author raaar
  *
  */
 public class TerminalBridge implements VDUDisplay, OnSharedPreferenceChangeListener {
diff --git a/ScriptingLayerForAndroid/src/org/connectbot/service/TerminalKeyListener.java b/ScriptingLayerForAndroid/src/org/connectbot/service/TerminalKeyListener.java
index 9fce1e8..256c58d 100644
--- a/ScriptingLayerForAndroid/src/org/connectbot/service/TerminalKeyListener.java
+++ b/ScriptingLayerForAndroid/src/org/connectbot/service/TerminalKeyListener.java
@@ -38,8 +38,6 @@
 import org.connectbot.util.SelectionArea;
 
 /**
- * @author kenny
- * @author modified by raaar
  */
 public class TerminalKeyListener implements OnKeyListener, OnSharedPreferenceChangeListener {
 
diff --git a/ScriptingLayerForAndroid/src/org/connectbot/service/TerminalManager.java b/ScriptingLayerForAndroid/src/org/connectbot/service/TerminalManager.java
index bc83a92..b150c7a 100644
--- a/ScriptingLayerForAndroid/src/org/connectbot/service/TerminalManager.java
+++ b/ScriptingLayerForAndroid/src/org/connectbot/service/TerminalManager.java
@@ -53,8 +53,6 @@
  * Manager for SSH connections that runs as a background service. This service holds a list of
  * currently connected SSH bridges that are ready for connection up to a GUI if needed.
  *
- * @author jsharkey
- * @author modified by raaar
  */
 public class TerminalManager implements OnSharedPreferenceChangeListener {
 
diff --git a/ScriptingLayerForAndroid/src/org/connectbot/transport/AbsTransport.java b/ScriptingLayerForAndroid/src/org/connectbot/transport/AbsTransport.java
index 3d8c943..3e1cb48 100644
--- a/ScriptingLayerForAndroid/src/org/connectbot/transport/AbsTransport.java
+++ b/ScriptingLayerForAndroid/src/org/connectbot/transport/AbsTransport.java
@@ -23,8 +23,6 @@
 import java.io.IOException;
 
 /**
- * @author Kenny Root
- * @author modified by raaar
  */
 public abstract class AbsTransport {
 
diff --git a/ScriptingLayerForAndroid/src/org/connectbot/util/Colors.java b/ScriptingLayerForAndroid/src/org/connectbot/util/Colors.java
index 13310e2..2a53639 100644
--- a/ScriptingLayerForAndroid/src/org/connectbot/util/Colors.java
+++ b/ScriptingLayerForAndroid/src/org/connectbot/util/Colors.java
@@ -18,7 +18,6 @@
 package org.connectbot.util;
 
 /**
- * @author Kenny Root
  *
  */
 public class Colors {
diff --git a/ScriptingLayerForAndroid/src/org/connectbot/util/ColorsActivity.java b/ScriptingLayerForAndroid/src/org/connectbot/util/ColorsActivity.java
index 532da35..0cf4d61 100644
--- a/ScriptingLayerForAndroid/src/org/connectbot/util/ColorsActivity.java
+++ b/ScriptingLayerForAndroid/src/org/connectbot/util/ColorsActivity.java
@@ -25,7 +25,6 @@
 import org.connectbot.util.UberColorPickerDialog.OnColorChangedListener;
 
 /**
- * @author modified by raaar
  */
 public class ColorsActivity extends Activity implements OnItemClickListener, OnColorChangedListener {
 
diff --git a/ScriptingLayerForAndroid/src/org/connectbot/util/EastAsianWidth.java b/ScriptingLayerForAndroid/src/org/connectbot/util/EastAsianWidth.java
index b27cd48..a5ab02f 100644
--- a/ScriptingLayerForAndroid/src/org/connectbot/util/EastAsianWidth.java
+++ b/ScriptingLayerForAndroid/src/org/connectbot/util/EastAsianWidth.java
@@ -20,7 +20,6 @@
 import android.util.Log;
 
 /**
- * @author Kenny Root
  *
  */
 public class EastAsianWidth {
diff --git a/ScriptingLayerForAndroid/src/org/connectbot/util/HelpTopicView.java b/ScriptingLayerForAndroid/src/org/connectbot/util/HelpTopicView.java
index bf6f026..3a03947 100644
--- a/ScriptingLayerForAndroid/src/org/connectbot/util/HelpTopicView.java
+++ b/ScriptingLayerForAndroid/src/org/connectbot/util/HelpTopicView.java
@@ -25,7 +25,6 @@
 import org.connectbot.HelpActivity;
 
 /**
- * @author Kenny Root
  *
  */
 public class HelpTopicView extends WebView {
diff --git a/ScriptingLayerForAndroid/src/org/connectbot/util/PreferenceConstants.java b/ScriptingLayerForAndroid/src/org/connectbot/util/PreferenceConstants.java
index d2c54d6..0e0926b 100644
--- a/ScriptingLayerForAndroid/src/org/connectbot/util/PreferenceConstants.java
+++ b/ScriptingLayerForAndroid/src/org/connectbot/util/PreferenceConstants.java
@@ -18,8 +18,6 @@
 package org.connectbot.util;
 
 /**
- * @author Kenny Root
- * @author modified by raaar
  */
 public class PreferenceConstants {
 
diff --git a/ScriptingLayerForAndroid/src/org/connectbot/util/SelectionArea.java b/ScriptingLayerForAndroid/src/org/connectbot/util/SelectionArea.java
index 5735e55..2c0c69a 100644
--- a/ScriptingLayerForAndroid/src/org/connectbot/util/SelectionArea.java
+++ b/ScriptingLayerForAndroid/src/org/connectbot/util/SelectionArea.java
@@ -20,7 +20,6 @@
 import de.mud.terminal.VDUBuffer;
 
 /**
- * @author Kenny Root
  * Keep track of a selection area for the terminal copying mechanism.
  * If the orientation is flipped one way, swap the bottom and top or
  * left and right to keep it in the correct orientation.
diff --git a/ScriptingLayerForAndroid/src/org/connectbot/util/UberColorPickerDialog.java b/ScriptingLayerForAndroid/src/org/connectbot/util/UberColorPickerDialog.java
index e12307e..f438a82 100644
--- a/ScriptingLayerForAndroid/src/org/connectbot/util/UberColorPickerDialog.java
+++ b/ScriptingLayerForAndroid/src/org/connectbot/util/UberColorPickerDialog.java
@@ -62,7 +62,6 @@
  * NOTE (from Kenny Root): This is a VERY slimmed down version custom for ConnectBot.
  * Visit Keith's site for the full version at the URL listed in the author line.<p>
  *
- * @author Keith Wiley, kwiley@keithwiley.com, http://keithwiley.com
  */
 public class UberColorPickerDialog extends Dialog {
 	private OnColorChangedListener mListener;
diff --git a/ScriptingLayerForAndroid/src/org/connectbot/util/VolumePreference.java b/ScriptingLayerForAndroid/src/org/connectbot/util/VolumePreference.java
index 2e7f61c..6e2630a 100644
--- a/ScriptingLayerForAndroid/src/org/connectbot/util/VolumePreference.java
+++ b/ScriptingLayerForAndroid/src/org/connectbot/util/VolumePreference.java
@@ -25,7 +25,6 @@
 import android.widget.SeekBar.OnSeekBarChangeListener;
 
 /**
- * @author kenny
  *
  */
 public class VolumePreference extends DialogPreference implements OnSeekBarChangeListener {
diff --git a/Utils/src/com/googlecode/android_scripting/FileUtils.java b/Utils/src/com/googlecode/android_scripting/FileUtils.java
index 91abc2c..92eda1c 100644
--- a/Utils/src/com/googlecode/android_scripting/FileUtils.java
+++ b/Utils/src/com/googlecode/android_scripting/FileUtils.java
@@ -33,7 +33,6 @@
 /**
  * Utility functions for handling files.
  *
- * @author Damon Kohler (damonkohler@gmail.com)
  */
 public class FileUtils {
 
diff --git a/Utils/src/com/googlecode/android_scripting/NotificationIdFactory.java b/Utils/src/com/googlecode/android_scripting/NotificationIdFactory.java
index c87d94d..0ad9a20 100644
--- a/Utils/src/com/googlecode/android_scripting/NotificationIdFactory.java
+++ b/Utils/src/com/googlecode/android_scripting/NotificationIdFactory.java
@@ -22,7 +22,6 @@
  * Creates unique ids to identify the notifications created by the android scripting service and the
  * trigger service.
  *
- * @author Felix Arends (felix.arends@gmail.com)
  *
  */
 public final class NotificationIdFactory {
diff --git a/Utils/src/com/googlecode/android_scripting/SimpleServer.java b/Utils/src/com/googlecode/android_scripting/SimpleServer.java
index b93b6cb..17d3adf 100644
--- a/Utils/src/com/googlecode/android_scripting/SimpleServer.java
+++ b/Utils/src/com/googlecode/android_scripting/SimpleServer.java
@@ -42,7 +42,6 @@
 
 /**
  * A simple server.
- * @author Damon Kohler (damonkohler@gmail.com)
  */
 public abstract class SimpleServer {
   private static int threadIndex = 0;
diff --git a/Utils/src/com/googlecode/android_scripting/future/FutureResult.java b/Utils/src/com/googlecode/android_scripting/future/FutureResult.java
index 573424c..2f92a3e 100644
--- a/Utils/src/com/googlecode/android_scripting/future/FutureResult.java
+++ b/Utils/src/com/googlecode/android_scripting/future/FutureResult.java
@@ -23,7 +23,6 @@
 /**
  * FutureResult represents an eventual execution result for asynchronous operations.
  *
- * @author Damon Kohler (damonkohler@gmail.com)
  */
 public class FutureResult<T> implements Future<T> {
 
diff --git a/Utils/src/com/googlecode/android_scripting/interpreter/InterpreterConstants.java b/Utils/src/com/googlecode/android_scripting/interpreter/InterpreterConstants.java
index cf4667a..e856643 100644
--- a/Utils/src/com/googlecode/android_scripting/interpreter/InterpreterConstants.java
+++ b/Utils/src/com/googlecode/android_scripting/interpreter/InterpreterConstants.java
@@ -21,8 +21,6 @@
 /**
  * A collection of constants required for installation/removal of an interpreter.
  *
- * @author Damon Kohler (damonkohler@gmail.com)
- * @author Alexey Reznichenko (alexey.reznichenko@gmail.com)
  */
 public interface InterpreterConstants {
 
diff --git a/Utils/src/com/googlecode/android_scripting/interpreter/InterpreterDescriptor.java b/Utils/src/com/googlecode/android_scripting/interpreter/InterpreterDescriptor.java
index 519798c..5758f10 100644
--- a/Utils/src/com/googlecode/android_scripting/interpreter/InterpreterDescriptor.java
+++ b/Utils/src/com/googlecode/android_scripting/interpreter/InterpreterDescriptor.java
@@ -25,7 +25,6 @@
 /**
  * Provides interpreter-specific info for execution/installation/removal purposes.
  *
- * @author Alexey Reznichenko (alexey.reznichenko@gmail.com)
  */
 public interface InterpreterDescriptor {
 
diff --git a/Utils/src/com/googlecode/android_scripting/interpreter/InterpreterPropertyNames.java b/Utils/src/com/googlecode/android_scripting/interpreter/InterpreterPropertyNames.java
index b8995a7..2554491 100644
--- a/Utils/src/com/googlecode/android_scripting/interpreter/InterpreterPropertyNames.java
+++ b/Utils/src/com/googlecode/android_scripting/interpreter/InterpreterPropertyNames.java
@@ -19,7 +19,6 @@
 /**
  * A collection of {@link String} keys for querying an InterpreterProvider.
  *
- * @author Alexey Reznichenko (alexey.reznichenko@gmail.com)
  */
 public interface InterpreterPropertyNames {
 
diff --git a/Utils/src/com/trilead/ssh2/StreamGobbler.java b/Utils/src/com/trilead/ssh2/StreamGobbler.java
index 2d67337..0d09dcc 100644
--- a/Utils/src/com/trilead/ssh2/StreamGobbler.java
+++ b/Utils/src/com/trilead/ssh2/StreamGobbler.java
@@ -45,7 +45,6 @@
  * The term "StreamGobbler" was taken from an article called "When Runtime.exec() won't", see
  * http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html.
  *
- * @author Christian Plattner, plattner@trilead.com
  * @version $Id: StreamGobbler.java,v 1.1 2007/10/15 12:49:56 cplattne Exp $
  */