diff --git a/bundles/org.eclipse.rap.addons.autosuggest/META-INF/MANIFEST.MF b/bundles/org.eclipse.rap.addons.autosuggest/META-INF/MANIFEST.MF
index c462895..b59448b 100644
--- a/bundles/org.eclipse.rap.addons.autosuggest/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.rap.addons.autosuggest/META-INF/MANIFEST.MF
@@ -2,11 +2,9 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Auto Suggest component
 Bundle-SymbolicName: org.eclipse.rap.addons.autosuggest
-Bundle-Version: 0.1.0.qualifier
+Bundle-Version: 0.2.0.qualifier
 Bundle-Vendor: Eclipse.org - RAP Incubator
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Export-Package: org.eclipse.rap.addons.autosuggest;version="0.1.0"
-Require-Bundle: org.eclipse.rap.rwt;bundle-version="2.1.0"
-Import-Package: org.eclipse.rap.addons.dropdown;version="0.1.0",
- org.eclipse.rap.clientscripting;version="0.2.0",
- org.eclipse.rap.clientscripting.internal;version="0.2.0"
+Export-Package: org.eclipse.rap.addons.autosuggest;version="0.2.0"
+Require-Bundle: org.eclipse.rap.rwt;bundle-version="2.2.0"
+Import-Package: org.eclipse.rap.addons.dropdown;version="0.2.0"
diff --git a/bundles/org.eclipse.rap.addons.autosuggest/pom.xml b/bundles/org.eclipse.rap.addons.autosuggest/pom.xml
index b82548d..3297889 100644
--- a/bundles/org.eclipse.rap.addons.autosuggest/pom.xml
+++ b/bundles/org.eclipse.rap.addons.autosuggest/pom.xml
@@ -22,7 +22,7 @@
   </parent>
 
   <artifactId>org.eclipse.rap.addons.autosuggest</artifactId>
-  <version>0.1.0-SNAPSHOT</version>
+  <version>0.2.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/AutoSuggest.java b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/AutoSuggest.java
index 60fb407..31de64d 100644
--- a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/AutoSuggest.java
+++ b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/AutoSuggest.java
@@ -19,18 +19,20 @@
 import org.eclipse.rap.addons.autosuggest.internal.resources.EventDelegatorListener;
 import org.eclipse.rap.addons.autosuggest.internal.resources.ModelResources;
 import org.eclipse.rap.addons.dropdown.DropDown;
-import org.eclipse.rap.clientscripting.ClientListener;
-import org.eclipse.rap.clientscripting.WidgetDataWhiteList;
 import org.eclipse.rap.json.JsonObject;
 import org.eclipse.rap.rwt.RWT;
+import org.eclipse.rap.rwt.internal.scripting.ClientListenerUtil;
+import org.eclipse.rap.rwt.lifecycle.WidgetUtil;
 import org.eclipse.rap.rwt.remote.AbstractOperationHandler;
 import org.eclipse.rap.rwt.remote.RemoteObject;
+import org.eclipse.rap.rwt.scripting.ClientListener;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Text;
 
 
+@SuppressWarnings( "restriction" )
 public class AutoSuggest {
 
   private static final String EVENT_TYPE_SELECTION = "suggestionSelected";
@@ -158,7 +160,7 @@
     attachClientListenerToModel( getAutoSuggestListener(), "change", "accept" );
   }
 
-  protected AutoSuggestClientListener getAutoSuggestListener() {
+  protected ClientListener getAutoSuggestListener() {
     return AutoSuggestListener.getInstance();
   }
 
@@ -176,8 +178,8 @@
     }
   }
 
-  private void attachClientListenerToModel( AutoSuggestClientListener listener, String... types ) {
-    String listenerId = listener.getId();
+  private void attachClientListenerToModel( ClientListener listener, String... types ) {
+    String listenerId = ClientListenerUtil.getRemoteId( listener );
     for( String type : types ) {
       remoteObject.call( "addListener",
                          new JsonObject().add( "listener", listenerId ).add( "type", type ) );
@@ -186,7 +188,7 @@
   }
 
   private void connectClientObjects() {
-    WidgetDataWhiteList.addKey( MODEL_ID_KEY );
+    WidgetUtil.registerDataKeys( MODEL_ID_KEY );
     remoteObject.set( "textWidgetId", getId( text ) );
     remoteObject.set( "dropDownWidgetId", getId( dropDown ) );
     dropDown.setData( MODEL_ID_KEY, remoteObject.getId() );
diff --git a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/AutoSuggestClientListener.java b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/AutoSuggestClientListener.java
deleted file mode 100644
index b9a2f29..0000000
--- a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/AutoSuggestClientListener.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2013 EclipseSource and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    EclipseSource - initial API and implementation
- ******************************************************************************/
-package org.eclipse.rap.addons.autosuggest;
-
-import org.eclipse.rap.clientscripting.internal.ClientFunction;
-
-
-@SuppressWarnings( "restriction" )
-public class AutoSuggestClientListener extends ClientFunction {
-
-  public AutoSuggestClientListener( String scriptCode ) {
-    super( scriptCode );
-  }
-
-  public String getId() {
-    return getRemoteId();
-  }
-
-}
diff --git a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/AutoSuggestListener.java b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/AutoSuggestListener.java
index 4ae4f27..ed6b64a 100644
--- a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/AutoSuggestListener.java
+++ b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/AutoSuggestListener.java
@@ -10,11 +10,11 @@
  ******************************************************************************/
 package org.eclipse.rap.addons.autosuggest.internal.resources;
 
-import org.eclipse.rap.addons.autosuggest.AutoSuggestClientListener;
 import org.eclipse.rap.rwt.SingletonUtil;
+import org.eclipse.rap.rwt.scripting.ClientListener;
 
 
-public class AutoSuggestListener extends AutoSuggestClientListener {
+public class AutoSuggestListener extends ClientListener {
 
   public static AutoSuggestListener getInstance() {
     return SingletonUtil.getSessionInstance( AutoSuggestListener.class );
diff --git a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/EventDelegatorListener.java b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/EventDelegatorListener.java
index 5a3ac77..4721b7a 100644
--- a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/EventDelegatorListener.java
+++ b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/EventDelegatorListener.java
@@ -10,21 +10,21 @@
  ******************************************************************************/
 package org.eclipse.rap.addons.autosuggest.internal.resources;
 
-import org.eclipse.rap.clientscripting.ClientListener;
 import org.eclipse.rap.rwt.SingletonUtil;
+import org.eclipse.rap.rwt.scripting.ClientListener;
 
 
 public class EventDelegatorListener  {
 
-  private final ClientListener eventDeleatorListener;
+  private final ClientListener eventDelegatorListener;
 
   // Can not extend ClientListener since Widget#addListner would not detect it
   public static ClientListener getInstance() {
-    return SingletonUtil.getSessionInstance( EventDelegatorListener.class ).eventDeleatorListener;
+    return SingletonUtil.getSessionInstance( EventDelegatorListener.class ).eventDelegatorListener;
   }
 
   private EventDelegatorListener() {
-    eventDeleatorListener = new ClientListener( getText() );
+    eventDelegatorListener = new ClientListener( getText() );
   }
 
   private static String getText() {
diff --git a/bundles/org.eclipse.rap.addons.dropdown/META-INF/MANIFEST.MF b/bundles/org.eclipse.rap.addons.dropdown/META-INF/MANIFEST.MF
index af0b42b..69577c2 100644
--- a/bundles/org.eclipse.rap.addons.dropdown/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.rap.addons.dropdown/META-INF/MANIFEST.MF
@@ -2,12 +2,10 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: DropDown
 Bundle-SymbolicName: org.eclipse.rap.addons.dropdown
-Bundle-Version: 0.1.0.qualifier
+Bundle-Version: 0.2.0.qualifier
 Bundle-Vendor: Eclipse.org - RAP Incubator
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Import-Package: org.eclipse.rap.clientscripting;version="0.1.100",
- org.eclipse.rap.clientscripting.internal;version="0.2.0",
- org.osgi.framework;version="1.3.0"
-Export-Package: org.eclipse.rap.addons.dropdown;version="0.1.0",
- org.eclipse.rap.addons.dropdown.internal.resources;version="0.1.0";x-internal:=true
-Require-Bundle: org.eclipse.rap.rwt;bundle-version="2.1.0"
+Import-Package: org.osgi.framework;version="1.3.0"
+Export-Package: org.eclipse.rap.addons.dropdown;version="0.2.0",
+ org.eclipse.rap.addons.dropdown.internal.resources;version="0.2.0";x-internal:=true
+Require-Bundle: org.eclipse.rap.rwt;bundle-version="2.2.0"
diff --git a/bundles/org.eclipse.rap.addons.dropdown/js/rwt/dropdown/DropDownHandler.js b/bundles/org.eclipse.rap.addons.dropdown/js/rwt/dropdown/DropDownHandler.js
index 901bb3d..064eb32 100644
--- a/bundles/org.eclipse.rap.addons.dropdown/js/rwt/dropdown/DropDownHandler.js
+++ b/bundles/org.eclipse.rap.addons.dropdown/js/rwt/dropdown/DropDownHandler.js
@@ -23,7 +23,20 @@
 
     events : [ "Selection", "DefaultSelection" ],
 
-    methods : [ "setData" ],
+    methods : [ "setData", "addListener", "removeListener" ],
+
+    methodHandler: {
+      "addListener": function( widget, properties ) {
+        rwt.remote.HandlerUtil.callWithTarget( properties.listenerId, function( targetFunction ) {
+          widget.addListener( properties.eventType, targetFunction );
+        } );
+      },
+      "removeListener": function( widget, properties ) {
+        rwt.remote.HandlerUtil.callWithTarget( properties.listenerId, function( targetFunction ) {
+          widget.removeListener( properties.eventType, targetFunction );
+        } );
+      }
+    },
 
     destructor : "destroy"
 
diff --git a/bundles/org.eclipse.rap.addons.dropdown/pom.xml b/bundles/org.eclipse.rap.addons.dropdown/pom.xml
index 27cdec3..3baa0ea 100644
--- a/bundles/org.eclipse.rap.addons.dropdown/pom.xml
+++ b/bundles/org.eclipse.rap.addons.dropdown/pom.xml
@@ -22,7 +22,7 @@
   </parent>
 
   <artifactId>org.eclipse.rap.addons.dropdown</artifactId>
-  <version>0.1.0-SNAPSHOT</version>
+  <version>0.2.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
 </project>
diff --git a/bundles/org.eclipse.rap.addons.dropdown/src/org/eclipse/rap/addons/dropdown/DropDown.java b/bundles/org.eclipse.rap.addons.dropdown/src/org/eclipse/rap/addons/dropdown/DropDown.java
index 8848c65..b694dad 100644
--- a/bundles/org.eclipse.rap.addons.dropdown/src/org/eclipse/rap/addons/dropdown/DropDown.java
+++ b/bundles/org.eclipse.rap.addons.dropdown/src/org/eclipse/rap/addons/dropdown/DropDown.java
@@ -10,19 +10,19 @@
  ******************************************************************************/
 package org.eclipse.rap.addons.dropdown;
 
-import java.util.Arrays;
-
 import org.eclipse.rap.addons.dropdown.internal.resources.DropDownResources;
 import org.eclipse.rap.json.JsonArray;
 import org.eclipse.rap.json.JsonObject;
 import org.eclipse.rap.json.JsonValue;
 import org.eclipse.rap.rwt.RWT;
-import org.eclipse.rap.rwt.internal.client.WidgetDataWhiteList;
+import org.eclipse.rap.rwt.internal.lifecycle.WidgetDataUtil;
 import org.eclipse.rap.rwt.internal.protocol.JsonUtil;
+import org.eclipse.rap.rwt.internal.scripting.ClientListenerUtil;
 import org.eclipse.rap.rwt.lifecycle.WidgetAdapter;
 import org.eclipse.rap.rwt.lifecycle.WidgetUtil;
 import org.eclipse.rap.rwt.remote.AbstractOperationHandler;
 import org.eclipse.rap.rwt.remote.RemoteObject;
+import org.eclipse.rap.rwt.scripting.ClientListener;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.SWTException;
 import org.eclipse.swt.internal.events.EventLCAUtil;
@@ -286,7 +286,12 @@
     super.addListener( eventType, listener );
     boolean isListening = EventLCAUtil.isListening( this, eventType );
     String remoteType = eventTypeToString( eventType );
-    if( remoteType != null && !wasListening && isListening ) {
+    if( listener instanceof ClientListener ) {
+      JsonObject parameters = new JsonObject()
+        .add( "eventType", ClientListenerUtil.getEventType( eventType ) )
+        .add( "listenerId", ClientListenerUtil.getRemoteId( ( ClientListener )listener ) );
+      remoteObject.call( "addListener", parameters );
+    } else if( remoteType != null && !wasListening && isListening ) {
       remoteObject.listen( remoteType, true );
     }
   }
@@ -297,7 +302,12 @@
     super.removeListener( eventType, listener );
     boolean isListening = EventLCAUtil.isListening( this, eventType );
     String remoteType = eventTypeToString( eventType );
-    if( remoteType != null && wasListening && !isListening ) {
+    if( listener instanceof ClientListener ) {
+      JsonObject parameters = new JsonObject()
+        .add( "eventType", ClientListenerUtil.getEventType( eventType ) )
+        .add( "listenerId", ClientListenerUtil.getRemoteId( ( ClientListener )listener ) );
+      remoteObject.call( "removeListener", parameters );
+    } else if( remoteType != null && wasListening && !isListening ) {
       remoteObject.listen( remoteType, false );
     }
   }
@@ -374,9 +384,7 @@
     // TODO [tb] : could be optimized using a PhaseListener
     //             This implementation assumes the client merges the new values with the existing
     //             ones, which is the case in the WebClient
-    WidgetDataWhiteList service = RWT.getClient().getService( WidgetDataWhiteList.class );
-    String[] dataKeys = service == null ? null : service.getKeys();
-    if( dataKeys != null && Arrays.asList( dataKeys ).contains( key ) ) {
+    if( WidgetDataUtil.getDataKeys().contains( key ) ) {
       @SuppressWarnings( "deprecation" )
       JsonObject data = new JsonObject().add( key, JsonUtil.createJsonValue( value ) );
       remoteObject.call( "setData", data );
diff --git a/examples/org.eclipse.rap.addons.dropdown.demo.examples/META-INF/MANIFEST.MF b/examples/org.eclipse.rap.addons.dropdown.demo.examples/META-INF/MANIFEST.MF
index 1eb37e6..d398baf 100644
--- a/examples/org.eclipse.rap.addons.dropdown.demo.examples/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.rap.addons.dropdown.demo.examples/META-INF/MANIFEST.MF
@@ -3,11 +3,11 @@
 Bundle-Name: DropDown Addon for Examples Demo
 Bundle-SymbolicName: org.eclipse.rap.addons.dropdown.demo.examples
 Bundle-Version: 1.0.0.qualifier
-Import-Package: org.eclipse.rap.addons.autosuggest;version="0.1.0",
+Import-Package: org.eclipse.rap.addons.autosuggest;version="0.2.0",
  org.osgi.framework;version="1.3.0"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-Vendor: Eclipse.org - RAP
-Require-Bundle: org.eclipse.rap.rwt;bundle-version="2.1.0",
- org.eclipse.rap.examples;bundle-version="2.1.0"
-Export-Package: org.eclipse.rap.addons.dropdown.demo.examples;version="0.1.0"
+Require-Bundle: org.eclipse.rap.rwt;bundle-version="2.2.0",
+ org.eclipse.rap.examples;bundle-version="2.2.0"
+Export-Package: org.eclipse.rap.addons.dropdown.demo.examples;version="0.2.0"
 Bundle-Activator: org.eclipse.rap.addons.dropdown.demo.examples.Activator
diff --git a/examples/org.eclipse.rap.addons.dropdown.demo.examples/pom.xml b/examples/org.eclipse.rap.addons.dropdown.demo.examples/pom.xml
index c5bea08..e1974cf 100644
--- a/examples/org.eclipse.rap.addons.dropdown.demo.examples/pom.xml
+++ b/examples/org.eclipse.rap.addons.dropdown.demo.examples/pom.xml
@@ -17,7 +17,7 @@
   <parent>
     <groupId>org.eclipse.rap</groupId>
     <artifactId>org.eclipse.rap.demo.examples.parent</artifactId>
-    <version>2.1.0-SNAPSHOT</version>
+    <version>2.2.0-SNAPSHOT</version>
     <relativePath>../../org.eclipse.rap/releng/org.eclipse.rap.demo.examples.build/parent/</relativePath>
   </parent>
 
diff --git a/examples/org.eclipse.rap.addons.dropdown.demo/DropDown Demo 9494_dropdown.launch b/examples/org.eclipse.rap.addons.dropdown.demo/DropDown Demo 9494_dropdown.launch
deleted file mode 100644
index c0c2877..0000000
--- a/examples/org.eclipse.rap.addons.dropdown.demo/DropDown Demo 9494_dropdown.launch
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.rap.ui.launch.RAPLauncher">
-<booleanAttribute key="append.args" value="true"/>
-<booleanAttribute key="askclear" value="false"/>
-<booleanAttribute key="automaticAdd" value="false"/>
-<booleanAttribute key="automaticValidate" value="true"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="checked" value="[NONE]"/>
-<booleanAttribute key="clearConfig" value="true"/>
-<booleanAttribute key="clearws" value="true"/>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/DropDown Demo 9494_dropdown"/>
-<booleanAttribute key="default" value="true"/>
-<booleanAttribute key="default_auto_start" value="true"/>
-<intAttribute key="default_start_level" value="4"/>
-<booleanAttribute key="includeOptional" value="false"/>
-<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
-<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
-<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -clean -console -consolelog"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Declipse.ignoreApp=true&#13;&#10;-Dosgi.noShutdown=true&#13;&#10;-Dorg.eclipse.equinox.http.jetty.log.stderr.threshold=info"/>
-<stringAttribute key="org.eclipse.rap.launch.browserMode" value="EXTERNAL"/>
-<stringAttribute key="org.eclipse.rap.launch.contextpath" value="/example"/>
-<stringAttribute key="org.eclipse.rap.launch.dataLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.rap.tools.launch/DropDownDemo9494_dropdown"/>
-<booleanAttribute key="org.eclipse.rap.launch.developmentMode" value="true"/>
-<stringAttribute key="org.eclipse.rap.launch.entryPoint" value=""/>
-<stringAttribute key="org.eclipse.rap.launch.libraryVariant" value="DEBUG"/>
-<stringAttribute key="org.eclipse.rap.launch.logLevel" value="OFF"/>
-<booleanAttribute key="org.eclipse.rap.launch.openBrowser" value="true"/>
-<intAttribute key="org.eclipse.rap.launch.port" value="9494"/>
-<stringAttribute key="org.eclipse.rap.launch.servletName" value="/controls"/>
-<stringAttribute key="org.eclipse.rap.launch.servletPath" value="/dropdown"/>
-<intAttribute key="org.eclipse.rap.launch.sessionTimeout" value="10"/>
-<booleanAttribute key="org.eclipse.rap.launch.terminatePrevious" value="true"/>
-<booleanAttribute key="org.eclipse.rap.launch.useDefaultDataLocation" value="true"/>
-<booleanAttribute key="org.eclipse.rap.launch.useManualContextPath" value="false"/>
-<booleanAttribute key="org.eclipse.rap.launch.useManualPort" value="true"/>
-<booleanAttribute key="org.eclipse.rap.launch.useSessionTimeout" value="false"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="target_bundles" value="com.ibm.icu.base@default:default,javax.servlet@default:default,javax.xml@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.http.jetty@default:default,org.eclipse.equinox.http.servlet@default:default,org.eclipse.equinox.util@default:default,org.eclipse.jetty.continuation@default:default,org.eclipse.jetty.http@default:default,org.eclipse.jetty.io@default:default,org.eclipse.jetty.security@default:default,org.eclipse.jetty.server@default:default,org.eclipse.jetty.servlet@default:default,org.eclipse.jetty.util@default:default,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.rap.rwt.osgi@default:default,org.eclipse.rap.rwt@default:default"/>
-<booleanAttribute key="tracing" value="false"/>
-<booleanAttribute key="useCustomFeatures" value="false"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<stringAttribute key="workspace_bundles" value="org.eclipse.rap.addons.autosuggest@default:default,org.eclipse.rap.addons.dropdown.demo@default:default,org.eclipse.rap.addons.dropdown@default:default,org.eclipse.rap.clientscripting@default:default"/>
-</launchConfiguration>
diff --git a/examples/org.eclipse.rap.addons.dropdown.demo/META-INF/MANIFEST.MF b/examples/org.eclipse.rap.addons.dropdown.demo/META-INF/MANIFEST.MF
index a3062b6..b126ef4 100644
--- a/examples/org.eclipse.rap.addons.dropdown.demo/META-INF/MANIFEST.MF
+++ b/examples/org.eclipse.rap.addons.dropdown.demo/META-INF/MANIFEST.MF
@@ -2,12 +2,11 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: DropDown Demo
 Bundle-SymbolicName: org.eclipse.rap.addons.dropdown.demo
-Bundle-Version: 0.1.0.qualifier
+Bundle-Version: 0.2.0.qualifier
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Require-Bundle: org.eclipse.rap.rwt;bundle-version="2.1.0",
- org.eclipse.rap.clientscripting;bundle-version="0.1.100"
+Require-Bundle: org.eclipse.rap.rwt;bundle-version="2.2.0"
 Service-Component: OSGI-INF/*.xml
 Bundle-Vendor: Eclipse.org - RAP Incubator
-Import-Package: org.eclipse.rap.addons.autosuggest;version="0.1.0",
- org.eclipse.rap.addons.dropdown;version="0.1.0"
-Export-Package: org.eclipse.rap.addons.dropdown.demo;version="0.1.0"
+Import-Package: org.eclipse.rap.addons.autosuggest;version="0.2.0",
+ org.eclipse.rap.addons.dropdown;version="0.2.0"
+Export-Package: org.eclipse.rap.addons.dropdown.demo;version="0.2.0"
diff --git a/examples/org.eclipse.rap.addons.dropdown.demo/OSGI-INF/config.xml b/examples/org.eclipse.rap.addons.dropdown.demo/OSGI-INF/config.xml
deleted file mode 100644
index 2e6c998..0000000
--- a/examples/org.eclipse.rap.addons.dropdown.demo/OSGI-INF/config.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.rap.addons.dropdown.demo.demo">
-   <implementation class="org.eclipse.rap.addons.dropdown.demo.DropDownApplicationConfiguration"/>
-   <service>
-      <provide interface="org.eclipse.rap.rwt.application.ApplicationConfiguration"/>
-   </service>
-</scr:component>
diff --git a/examples/org.eclipse.rap.addons.dropdown.demo/build.properties b/examples/org.eclipse.rap.addons.dropdown.demo/build.properties
index f447e51..450268e 100644
--- a/examples/org.eclipse.rap.addons.dropdown.demo/build.properties
+++ b/examples/org.eclipse.rap.addons.dropdown.demo/build.properties
@@ -1,7 +1,5 @@
 output.. = bin/
 bin.includes = META-INF/,\
-               .,\
-               OSGI-INF/,\
-               theme/
+               .
 source.. = src/
 javacDefaultEncoding.. = UTF-8
diff --git a/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/AutoSuggestDemo.java b/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/AutoSuggestDemo.java
index 0e49ce6..4a35553 100644
--- a/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/AutoSuggestDemo.java
+++ b/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/AutoSuggestDemo.java
@@ -13,7 +13,6 @@
 import java.util.Arrays;
 
 import org.eclipse.rap.addons.autosuggest.AutoSuggest;
-import org.eclipse.rap.addons.autosuggest.AutoSuggestClientListener;
 import org.eclipse.rap.addons.autosuggest.DataProvider;
 import org.eclipse.rap.addons.autosuggest.DataSource;
 import org.eclipse.rap.addons.autosuggest.SuggestionSelectedListener;
@@ -21,8 +20,8 @@
 import org.eclipse.rap.addons.dropdown.demo.scripts.CustomAutoSuggestClientListener;
 import org.eclipse.rap.rwt.RWT;
 import org.eclipse.rap.rwt.application.AbstractEntryPoint;
-import org.eclipse.rap.rwt.internal.client.WidgetDataWhiteList;
-import org.eclipse.rap.rwt.internal.client.WidgetDataWhiteListImpl;
+import org.eclipse.rap.rwt.lifecycle.WidgetUtil;
+import org.eclipse.rap.rwt.scripting.ClientListener;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
@@ -37,23 +36,8 @@
 import org.eclipse.swt.widgets.Text;
 
 
-@SuppressWarnings("restriction")
 public class AutoSuggestDemo extends AbstractEntryPoint {
 
-
-  private class CustomAutoSuggest extends AutoSuggest {
-
-    public CustomAutoSuggest( Text text ) {
-      super( text );
-    }
-
-    @Override
-    protected AutoSuggestClientListener getAutoSuggestListener() {
-      return CustomAutoSuggestClientListener.getInstance();
-    }
-
-  }
-
   private Text text;
   private AutoSuggest autoSuggest;
   private DataSource de;
@@ -212,9 +196,20 @@
   }
 
   private static void setupWidgetDataWhiteList() {
-    WidgetDataWhiteListImpl list
-      = ( WidgetDataWhiteListImpl )RWT.getClient().getService( WidgetDataWhiteList.class );
-    list.setKeys( new String[]{ "dropdown", "text", "data" } );
+    WidgetUtil.registerDataKeys( "dropdown", "text", "data" );
+  }
+
+  private class CustomAutoSuggest extends AutoSuggest {
+
+    public CustomAutoSuggest( Text text ) {
+      super( text );
+    }
+
+    @Override
+    protected ClientListener getAutoSuggestListener() {
+      return CustomAutoSuggestClientListener.getInstance();
+    }
+
   }
 
 }
diff --git a/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/scripts/CustomAutoSuggestClientListener.java b/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/scripts/CustomAutoSuggestClientListener.java
index 1d24309..1c6a50b 100644
--- a/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/scripts/CustomAutoSuggestClientListener.java
+++ b/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/scripts/CustomAutoSuggestClientListener.java
@@ -10,11 +10,11 @@
  ******************************************************************************/
 package org.eclipse.rap.addons.dropdown.demo.scripts;
 
-import org.eclipse.rap.addons.autosuggest.AutoSuggestClientListener;
 import org.eclipse.rap.rwt.SingletonUtil;
+import org.eclipse.rap.rwt.scripting.ClientListener;
 
 
-public class CustomAutoSuggestClientListener extends AutoSuggestClientListener {
+public class CustomAutoSuggestClientListener extends ClientListener {
 
   public static CustomAutoSuggestClientListener getInstance() {
     return SingletonUtil.getSessionInstance( CustomAutoSuggestClientListener.class );
diff --git a/features/org.eclipse.rap.dropdown.feature/feature.xml b/features/org.eclipse.rap.dropdown.feature/feature.xml
index 3120966..2064180 100644
--- a/features/org.eclipse.rap.dropdown.feature/feature.xml
+++ b/features/org.eclipse.rap.dropdown.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.rap.dropdown.feature"
       label="RAP Dropdown (Incubation)"
-      version="0.1.0.qualifier"
+      version="0.2.0.qualifier"
       provider-name="Eclipse.org - RAP Incubator">
 
    <description url="http://www.example.com/description">
diff --git a/features/org.eclipse.rap.dropdown.feature/pom.xml b/features/org.eclipse.rap.dropdown.feature/pom.xml
index a35492d..5f63537 100644
--- a/features/org.eclipse.rap.dropdown.feature/pom.xml
+++ b/features/org.eclipse.rap.dropdown.feature/pom.xml
@@ -22,7 +22,7 @@
   </parent>
 
   <artifactId>org.eclipse.rap.dropdown.feature</artifactId>
-  <version>0.1.0-SNAPSHOT</version>
+  <version>0.2.0-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 
 </project>
diff --git a/releng/org.eclipse.rap.dropdown.build/pom.xml b/releng/org.eclipse.rap.dropdown.build/pom.xml
index 342aa92..cc2e185 100644
--- a/releng/org.eclipse.rap.dropdown.build/pom.xml
+++ b/releng/org.eclipse.rap.dropdown.build/pom.xml
@@ -22,7 +22,7 @@
   </parent>
 
   <artifactId>org.eclipse.rap.dropdown.build</artifactId>
-  <version>0.1.0-SNAPSHOT</version>
+  <version>0.2.0-SNAPSHOT</version>
   <packaging>pom</packaging>
 
   <modules>
diff --git a/releng/org.eclipse.rap.dropdown.build/repository/category.xml b/releng/org.eclipse.rap.dropdown.build/repository/category.xml
index 1b1b09f..f9dc174 100644
--- a/releng/org.eclipse.rap.dropdown.build/repository/category.xml
+++ b/releng/org.eclipse.rap.dropdown.build/repository/category.xml
@@ -17,7 +17,7 @@
 
   <feature url="http://eclipse.org/rap"
       id="org.eclipse.rap.dropdown.feature"
-      version="0.1.0.qualifier">
+      version="0.2.0.qualifier">
     <category name="org.eclipse.rap.incubator.category"/>
   </feature>
 
diff --git a/releng/org.eclipse.rap.dropdown.build/repository/pom.xml b/releng/org.eclipse.rap.dropdown.build/repository/pom.xml
index a19f05b..2922735 100644
--- a/releng/org.eclipse.rap.dropdown.build/repository/pom.xml
+++ b/releng/org.eclipse.rap.dropdown.build/repository/pom.xml
@@ -22,7 +22,7 @@
   </parent>
 
   <artifactId>org.eclipse.rap.dropdown-repository</artifactId>
-  <version>0.1.0-SNAPSHOT</version>
+  <version>0.2.0-SNAPSHOT</version>
   <packaging>eclipse-repository</packaging>
 
   <build>
diff --git a/tests/org.eclipse.rap.addons.autosuggest.test/META-INF/MANIFEST.MF b/tests/org.eclipse.rap.addons.autosuggest.test/META-INF/MANIFEST.MF
index 1c62b5e..7752e2e 100644
--- a/tests/org.eclipse.rap.addons.autosuggest.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.rap.addons.autosuggest.test/META-INF/MANIFEST.MF
@@ -2,12 +2,11 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Auto Suggest Tests
 Bundle-SymbolicName: org.eclipse.rap.addons.autosuggest.test
-Bundle-Version: 0.1.0.qualifier
+Bundle-Version: 0.2.0.qualifier
 Bundle-Vendor: Eclipse.org - RAP Incubator
-Fragment-Host: org.eclipse.rap.addons.autosuggest;bundle-version="0.1.0"
+Fragment-Host: org.eclipse.rap.addons.autosuggest;bundle-version="0.2.0"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Require-Bundle: org.junit;bundle-version="4.11.0",
  org.mockito.mockito-all;bundle-version="1.9.5",
- org.eclipse.rap.jstestrunner;bundle-version="0.1.0"
-Import-Package: org.eclipse.rap.clientscripting;version="0.2.0",
- org.eclipse.rap.rwt.testfixture;version="2.1.0"
+ org.eclipse.rap.jstestrunner;bundle-version="0.2.0"
+Import-Package: org.eclipse.rap.rwt.testfixture;version="2.2.0"
diff --git a/tests/org.eclipse.rap.addons.autosuggest.test/jasmine/jasmine/AutoSuggestJs_Test.java b/tests/org.eclipse.rap.addons.autosuggest.test/jasmine/jasmine/AutoSuggestJs_Test.java
index da366de..0c4d22d 100644
--- a/tests/org.eclipse.rap.addons.autosuggest.test/jasmine/jasmine/AutoSuggestJs_Test.java
+++ b/tests/org.eclipse.rap.addons.autosuggest.test/jasmine/jasmine/AutoSuggestJs_Test.java
@@ -10,8 +10,8 @@
  ******************************************************************************/
 package jasmine;
 
-import org.eclipse.rap.clientscripting.ClientListener;
 import org.eclipse.rap.jstestrunner.jasmine.JasmineTestRunner;
+import org.eclipse.rap.rwt.scripting.ClientListener;
 import org.junit.Before;
 import org.junit.Test;
 
diff --git a/tests/org.eclipse.rap.addons.autosuggest.test/pom.xml b/tests/org.eclipse.rap.addons.autosuggest.test/pom.xml
index 924c9fc..6ec5b25 100644
--- a/tests/org.eclipse.rap.addons.autosuggest.test/pom.xml
+++ b/tests/org.eclipse.rap.addons.autosuggest.test/pom.xml
@@ -22,7 +22,7 @@
   </parent>
 
   <artifactId>org.eclipse.rap.addons.autosuggest.test</artifactId>
-  <version>0.1.0-SNAPSHOT</version>
+  <version>0.2.0-SNAPSHOT</version>
   <packaging>eclipse-test-plugin</packaging>
 
 </project>
diff --git a/tests/org.eclipse.rap.addons.autosuggest.test/src/org/eclipse/rap/addons/autosuggest/AutoSuggest_Test.java b/tests/org.eclipse.rap.addons.autosuggest.test/src/org/eclipse/rap/addons/autosuggest/AutoSuggest_Test.java
index 166282e..7f5602f 100644
--- a/tests/org.eclipse.rap.addons.autosuggest.test/src/org/eclipse/rap/addons/autosuggest/AutoSuggest_Test.java
+++ b/tests/org.eclipse.rap.addons.autosuggest.test/src/org/eclipse/rap/addons/autosuggest/AutoSuggest_Test.java
@@ -28,19 +28,16 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import java.util.Arrays;
-import java.util.List;
 import java.util.concurrent.atomic.AtomicReference;
 
 import org.eclipse.rap.addons.dropdown.DropDown;
-import org.eclipse.rap.clientscripting.ClientListener;
 import org.eclipse.rap.rwt.RWT;
-import org.eclipse.rap.rwt.internal.client.WidgetDataWhiteList;
-import org.eclipse.rap.rwt.internal.client.WidgetDataWhiteListImpl;
+import org.eclipse.rap.rwt.internal.lifecycle.WidgetDataUtil;
 import org.eclipse.rap.rwt.lifecycle.PhaseId;
 import org.eclipse.rap.rwt.remote.Connection;
 import org.eclipse.rap.rwt.remote.OperationHandler;
 import org.eclipse.rap.rwt.remote.RemoteObject;
+import org.eclipse.rap.rwt.scripting.ClientListener;
 import org.eclipse.rap.rwt.testfixture.Fixture;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Display;
@@ -156,38 +153,9 @@
 
   @Test
   public void testConstructor_addKeysToWidgetDataWhiteList() {
-    WidgetDataWhiteListImpl service
-      = ( WidgetDataWhiteListImpl )RWT.getClient().getService( WidgetDataWhiteList.class );
-    service.setKeys( new String[ 0 ] );
-
     new AutoSuggest( text );
 
-    List<String> list = Arrays.asList( service.getKeys() );
-    assertTrue( list.contains( MODEL_ID_KEY ) );
-  }
-
-  @Test
-  public void testConstructor_addKeysToWidgetDataWhiteListAndKeepExistingKeys() {
-    WidgetDataWhiteListImpl service
-      = ( WidgetDataWhiteListImpl )RWT.getClient().getService( WidgetDataWhiteList.class );
-    service.setKeys( new String[] { "foo" } );
-
-    new AutoSuggest( text );
-
-    List<String> list = Arrays.asList( service.getKeys() );
-    assertTrue( list.contains( "foo" ) );
-  }
-
-  @Test
-  public void testConstructor_addKeysToWidgetDataWhiteListOnlyOnce() {
-    WidgetDataWhiteListImpl service
-      = ( WidgetDataWhiteListImpl )RWT.getClient().getService( WidgetDataWhiteList.class );
-    service.setKeys( new String[] { MODEL_ID_KEY } );
-
-    new AutoSuggest( text );
-
-    List<String> list = Arrays.asList( service.getKeys() );
-    assertEquals( list.lastIndexOf( MODEL_ID_KEY ), list.indexOf( MODEL_ID_KEY ) );
+    assertTrue( WidgetDataUtil.getDataKeys().contains( MODEL_ID_KEY ) );
   }
 
   @Test
diff --git a/tests/org.eclipse.rap.addons.dropdown.test/META-INF/MANIFEST.MF b/tests/org.eclipse.rap.addons.dropdown.test/META-INF/MANIFEST.MF
index 95c1320..e92be76 100644
--- a/tests/org.eclipse.rap.addons.dropdown.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.rap.addons.dropdown.test/META-INF/MANIFEST.MF
@@ -2,15 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Tests for DropDown
 Bundle-SymbolicName: org.eclipse.rap.addons.dropdown.test
-Bundle-Version: 0.1.0.qualifier
+Bundle-Version: 0.2.0.qualifier
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Require-Bundle: org.eclipse.rap.rwt;bundle-version="2.1.0",
- org.eclipse.rap.rwt.jstest;bundle-version="2.1.0";resolution:=optional,
- org.eclipse.rap.rwt.testfixture;bundle-version="2.1.0";resolution:=optional,
- org.eclipse.rap.addons.dropdown;bundle-version="0.1.0",
+Require-Bundle: org.eclipse.rap.rwt;bundle-version="2.2.0",
+ org.eclipse.rap.rwt.jstest;bundle-version="2.2.0";resolution:=optional,
+ org.eclipse.rap.rwt.testfixture;bundle-version="2.2.0";resolution:=optional,
+ org.eclipse.rap.addons.dropdown;bundle-version="0.2.0",
  org.junit;bundle-version="4.8.0",
  org.mockito.mockito-all;bundle-version="1.9.5"
-Import-Package: org.eclipse.rap.clientscripting;version="0.1.100",
- org.eclipse.rap.clientscripting.internal;version="0.2.0"
 Service-Component: OSGI-INF/*.xml
 Bundle-Vendor: Eclipse.org - RAP Incubator
diff --git a/tests/org.eclipse.rap.addons.dropdown.test/pom.xml b/tests/org.eclipse.rap.addons.dropdown.test/pom.xml
index b657ded..16efe77 100644
--- a/tests/org.eclipse.rap.addons.dropdown.test/pom.xml
+++ b/tests/org.eclipse.rap.addons.dropdown.test/pom.xml
@@ -22,7 +22,7 @@
   </parent>
 
   <artifactId>org.eclipse.rap.addons.dropdown.test</artifactId>
-  <version>0.1.0-SNAPSHOT</version>
+  <version>0.2.0-SNAPSHOT</version>
   <packaging>eclipse-test-plugin</packaging>
 
 </project>
diff --git a/tests/org.eclipse.rap.addons.dropdown.test/src/org/eclipse/rap/addons/dropdown/DropDown_Test.java b/tests/org.eclipse.rap.addons.dropdown.test/src/org/eclipse/rap/addons/dropdown/DropDown_Test.java
index 9aa36c7..b7764e7 100644
--- a/tests/org.eclipse.rap.addons.dropdown.test/src/org/eclipse/rap/addons/dropdown/DropDown_Test.java
+++ b/tests/org.eclipse.rap.addons.dropdown.test/src/org/eclipse/rap/addons/dropdown/DropDown_Test.java
@@ -29,19 +29,18 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.eclipse.rap.clientscripting.ClientListener;
 import org.eclipse.rap.json.JsonArray;
 import org.eclipse.rap.json.JsonObject;
 import org.eclipse.rap.json.JsonValue;
 import org.eclipse.rap.rwt.RWT;
-import org.eclipse.rap.rwt.client.Client;
-import org.eclipse.rap.rwt.internal.client.WidgetDataWhiteList;
 import org.eclipse.rap.rwt.internal.protocol.JsonUtil;
+import org.eclipse.rap.rwt.internal.scripting.ClientListenerUtil;
 import org.eclipse.rap.rwt.lifecycle.PhaseId;
 import org.eclipse.rap.rwt.lifecycle.WidgetUtil;
 import org.eclipse.rap.rwt.remote.Connection;
 import org.eclipse.rap.rwt.remote.OperationHandler;
 import org.eclipse.rap.rwt.remote.RemoteObject;
+import org.eclipse.rap.rwt.scripting.ClientListener;
 import org.eclipse.rap.rwt.testfixture.Fixture;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.SWTException;
@@ -53,7 +52,6 @@
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
-import org.mockito.ArgumentCaptor;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 
@@ -358,13 +356,10 @@
   public void testSetData_RendersDataInWhiteList() {
     Fixture.fakePhase( PhaseId.PROCESS_ACTION );
 
-    fakeWidgetDataWhiteList( new String[]{ "foo", "bar" } );
+    WidgetUtil.registerDataKeys( "foo", "bar" );
     dropdown.setData( "foo", "bar" );
 
-    ArgumentCaptor<JsonObject> argument = ArgumentCaptor.forClass( JsonObject.class );
-    verify( remoteObject ).call( eq( "setData" ), argument.capture() );
-
-    assertEquals( "bar", argument.getValue().get( "foo" ).asString() );
+    verify( remoteObject ).call( eq( "setData" ), eq( new JsonObject().add( "foo", "bar" ) ) );
   }
 
   @Test
@@ -398,7 +393,7 @@
   public void testSetData_DoesNotRenderDataNotInWhiteList() {
     Fixture.fakePhase( PhaseId.PROCESS_ACTION );
 
-    fakeWidgetDataWhiteList( new String[]{ "foo", "bar" } );
+    WidgetUtil.registerDataKeys( "foo", "bar" );
     dropdown.setData( "fool", "bar" );
 
     verify( remoteObject, never() ).set( eq( "data" ), any( JsonObject.class ) );
@@ -407,6 +402,7 @@
   @Test
   public void testAddListener_SelectionRenderListenTrue() {
     Listener listener = mock( Listener.class );
+
     dropdown.addListener( SWT.Selection, listener );
 
     verify( remoteObject ).listen( eq( "Selection" ), eq( true ) );
@@ -415,12 +411,40 @@
   @Test
   public void testAddListener_DefaultSelectionRenderListenTrue() {
     Listener listener = mock( Listener.class );
+
     dropdown.addListener( SWT.DefaultSelection, listener );
 
     verify( remoteObject ).listen( eq( "DefaultSelection" ), eq( true ) );
   }
 
   @Test
+  public void testAddListener_Selection_doesNotSendListenTwice() {
+    dropdown.addListener( SWT.Selection, mock( Listener.class ) );
+    dropdown.addListener( SWT.Selection, mock( Listener.class ) );
+
+    verify( remoteObject, times( 1 ) ).listen( eq( "Selection" ), eq( true ) );
+  }
+
+  @Test
+  public void testAddListener_Selection_doesNotSendListenForClientListener() {
+    dropdown.addListener( SWT.Selection, new ClientListener( "foo" ) );
+
+    verify( remoteObject, times( 0 ) ).listen( eq( "Selection" ), eq( true ) );
+  }
+
+  @Test
+  public void testAddListener_rendersClientListeners() {
+    ClientListener listener = new ClientListener( "" );
+    String listenerId = ClientListenerUtil.getRemoteId( listener );
+
+    dropdown.addListener( SWT.Show, listener );
+
+    JsonObject expectedParameters
+      = new JsonObject().add( "eventType", "Show" ).add( "listenerId", listenerId );
+    verify( remoteObject ).call( eq( "addListener" ), eq( expectedParameters ) );
+  }
+
+  @Test
   public void testRemoveListener_SelectionRenderListenFalse() {
     Listener listener = mock( Listener.class );
     dropdown.addListener( SWT.Selection, listener );
@@ -440,18 +464,15 @@
   }
 
   @Test
-  public void testAddListener_Selection_doesNotSendListenTwice() {
-    dropdown.addListener( SWT.Selection, mock( Listener.class ) );
-    dropdown.addListener( SWT.Selection, mock( Listener.class ) );
+  public void testRemoveListener_rendersClientListeners() {
+    ClientListener listener = new ClientListener( "" );
+    String listenerId = ClientListenerUtil.getRemoteId( listener );
 
-    verify( remoteObject, times( 1 ) ).listen( eq( "Selection" ), eq( true ) );
-  }
+    dropdown.removeListener( SWT.Show, listener );
 
-  @Test
-  public void testAddListener_Selection_doesNotSendListenForClientListener() {
-    dropdown.addListener( SWT.Selection, new ClientListener( "foo" ) );
-
-    verify( remoteObject, times( 0 ) ).listen( eq( "Selection" ), eq( true ) );
+    JsonObject expectedParameters
+      = new JsonObject().add( "eventType", "Show" ).add( "listenerId", listenerId );
+    verify( remoteObject ).call( eq( "removeListener" ), eq( expectedParameters ) );
   }
 
   @Test
@@ -524,15 +545,4 @@
     assertEquals( "foo", log.get( 0 ).text );
   }
 
-  ///////////
-  // Helper
-
-  public static void fakeWidgetDataWhiteList( String[] keys ) {
-    WidgetDataWhiteList service = mock( WidgetDataWhiteList.class );
-    when( service.getKeys() ).thenReturn( keys );
-    Client client = mock( Client.class );
-    when( client.getService( WidgetDataWhiteList.class ) ).thenReturn( service );
-    Fixture.fakeClient( client );
-  }
-
 }
diff --git a/tests/org.eclipse.rap.jstestrunner/META-INF/MANIFEST.MF b/tests/org.eclipse.rap.jstestrunner/META-INF/MANIFEST.MF
index f01812e..65a411a 100644
--- a/tests/org.eclipse.rap.jstestrunner/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.rap.jstestrunner/META-INF/MANIFEST.MF
@@ -2,9 +2,9 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: RAP JavaScript Testrunner
 Bundle-SymbolicName: org.eclipse.rap.jstestrunner
-Bundle-Version: 0.1.0.qualifier
+Bundle-Version: 0.2.0.qualifier
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Require-Bundle: org.junit;bundle-version="4.8.2",
  org.mozilla.javascript;bundle-version="1.7.4"
-Export-Package: org.eclipse.rap.jstestrunner.jasmine;version="0.1.0"
+Export-Package: org.eclipse.rap.jstestrunner.jasmine;version="0.2.0"
 Bundle-Vendor: Eclipse.org - RAP
diff --git a/tests/org.eclipse.rap.jstestrunner/pom.xml b/tests/org.eclipse.rap.jstestrunner/pom.xml
index e7c96e6..88fef81 100644
--- a/tests/org.eclipse.rap.jstestrunner/pom.xml
+++ b/tests/org.eclipse.rap.jstestrunner/pom.xml
@@ -22,7 +22,7 @@
   </parent>
 
   <artifactId>org.eclipse.rap.jstestrunner</artifactId>
-  <version>0.1.0-SNAPSHOT</version>
+  <version>0.2.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
 </project>
