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 385a380..c462895 100644
--- a/bundles/org.eclipse.rap.addons.autosuggest/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.rap.addons.autosuggest/META-INF/MANIFEST.MF
@@ -5,8 +5,7 @@
 Bundle-Version: 0.1.0.qualifier
 Bundle-Vendor: Eclipse.org - RAP Incubator
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Export-Package: org.eclipse.rap.addons.autosuggest;version="0.1.0",
- org.eclipse.rap.addons.autosuggest.internal;version="0.1.0";x-internal:=true
+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",
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 3b446c6..60fb407 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
@@ -15,13 +15,11 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.eclipse.rap.addons.autosuggest.internal.AutoSuggestClientListener;
-import org.eclipse.rap.addons.autosuggest.internal.resources.AutoSuggestScript;
-import org.eclipse.rap.addons.autosuggest.internal.resources.EventDelegatorScript;
+import org.eclipse.rap.addons.autosuggest.internal.resources.AutoSuggestListener;
+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.Script;
 import org.eclipse.rap.clientscripting.WidgetDataWhiteList;
 import org.eclipse.rap.json.JsonObject;
 import org.eclipse.rap.rwt.RWT;
@@ -155,33 +153,31 @@
 
   private void attachClientListeners() {
     int[] dropDownEventTypes = new int[] { SWT.Show, SWT.Hide, SWT.Selection, SWT.DefaultSelection };
-    attachClientListenerToDropDown( EventDelegatorScript.getInstance(), dropDownEventTypes );
-    attachClientListenerToText( EventDelegatorScript.getInstance(), SWT.Modify, SWT.Verify );
-    attachClientListenerToModel( getAutoSuggestScript(), "change", "accept" );
+    attachClientListenerToDropDown( EventDelegatorListener.getInstance(), dropDownEventTypes );
+    attachClientListenerToText( EventDelegatorListener.getInstance(), SWT.Modify, SWT.Verify );
+    attachClientListenerToModel( getAutoSuggestListener(), "change", "accept" );
   }
 
-  protected Script getAutoSuggestScript() {
-    return AutoSuggestScript.getInstance();
+  protected AutoSuggestClientListener getAutoSuggestListener() {
+    return AutoSuggestListener.getInstance();
   }
 
-  private void attachClientListenerToText( Script script, int... types ) {
+  private void attachClientListenerToText( ClientListener listener, int... types ) {
     textClientListenerTypes = types;
-    textClientListener = new ClientListener( script );
+    textClientListener = listener;
     for( int type : types ) {
-      text.addListener( type, textClientListener );
+      text.addListener( type, listener );
     }
   }
 
-  private void attachClientListenerToDropDown( Script script, int... types ) {
-    ClientListener clientListener = new ClientListener( script );
+  private void attachClientListenerToDropDown( ClientListener listener, int... types ) {
     for( int type : types ) {
-      dropDown.addListener( type, clientListener );
+      dropDown.addListener( type, listener );
     }
   }
 
-  private void attachClientListenerToModel( Script script, String... types ) {
-    AutoSuggestClientListener clientListener = new AutoSuggestClientListener( script );
-    String listenerId = clientListener.getId();
+  private void attachClientListenerToModel( AutoSuggestClientListener listener, String... types ) {
+    String listenerId = listener.getId();
     for( String type : types ) {
       remoteObject.call( "addListener",
                          new JsonObject().add( "listener", listenerId ).add( "type", type ) );
diff --git a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/AutoSuggestClientListener.java b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/AutoSuggestClientListener.java
similarity index 75%
rename from bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/AutoSuggestClientListener.java
rename to bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/AutoSuggestClientListener.java
index 6675748..b9a2f29 100644
--- a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/AutoSuggestClientListener.java
+++ b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/AutoSuggestClientListener.java
@@ -8,23 +8,18 @@
  * Contributors:
  *    EclipseSource - initial API and implementation
  ******************************************************************************/
-package org.eclipse.rap.addons.autosuggest.internal;
+package org.eclipse.rap.addons.autosuggest;
 
-import org.eclipse.rap.clientscripting.Script;
 import org.eclipse.rap.clientscripting.internal.ClientFunction;
 
 
 @SuppressWarnings( "restriction" )
-public final class AutoSuggestClientListener extends ClientFunction {
+public class AutoSuggestClientListener extends ClientFunction {
 
   public AutoSuggestClientListener( String scriptCode ) {
     super( scriptCode );
   }
 
-  public AutoSuggestClientListener( Script script ) {
-    super( script );
-  }
-
   public String getId() {
     return getRemoteId();
   }
diff --git a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/AutoSuggestScript.java b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/AutoSuggestListener.java
similarity index 74%
rename from bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/AutoSuggestScript.java
rename to bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/AutoSuggestListener.java
index da77f34..4ae4f27 100644
--- a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/AutoSuggestScript.java
+++ b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/AutoSuggestListener.java
@@ -10,17 +10,17 @@
  ******************************************************************************/
 package org.eclipse.rap.addons.autosuggest.internal.resources;
 
-import org.eclipse.rap.clientscripting.Script;
+import org.eclipse.rap.addons.autosuggest.AutoSuggestClientListener;
 import org.eclipse.rap.rwt.SingletonUtil;
 
 
-public class AutoSuggestScript extends Script {
+public class AutoSuggestListener extends AutoSuggestClientListener {
 
-  public static AutoSuggestScript getInstance() {
-    return SingletonUtil.getSessionInstance( AutoSuggestScript.class );
+  public static AutoSuggestListener getInstance() {
+    return SingletonUtil.getSessionInstance( AutoSuggestListener.class );
   }
 
-  private AutoSuggestScript() {
+  private AutoSuggestListener() {
     super( getText() );
   }
 
diff --git a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/EventDelegatorScript.java b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/EventDelegatorListener.java
similarity index 63%
rename from bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/EventDelegatorScript.java
rename to bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/EventDelegatorListener.java
index 7267335..5a3ac77 100644
--- a/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/EventDelegatorScript.java
+++ b/bundles/org.eclipse.rap.addons.autosuggest/src/org/eclipse/rap/addons/autosuggest/internal/resources/EventDelegatorListener.java
@@ -10,18 +10,21 @@
  ******************************************************************************/
 package org.eclipse.rap.addons.autosuggest.internal.resources;
 
-import org.eclipse.rap.clientscripting.Script;
+import org.eclipse.rap.clientscripting.ClientListener;
 import org.eclipse.rap.rwt.SingletonUtil;
 
 
-public class EventDelegatorScript extends Script {
+public class EventDelegatorListener  {
 
-  public static EventDelegatorScript getInstance() {
-    return SingletonUtil.getSessionInstance( EventDelegatorScript.class );
+  private final ClientListener eventDeleatorListener;
+
+  // Can not extend ClientListener since Widget#addListner would not detect it
+  public static ClientListener getInstance() {
+    return SingletonUtil.getSessionInstance( EventDelegatorListener.class ).eventDeleatorListener;
   }
 
-  private EventDelegatorScript() {
-    super( getText() );
+  private EventDelegatorListener() {
+    eventDeleatorListener = new ClientListener( getText() );
   }
 
   private static String getText() {
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
index 54fd9fe..c0c2877 100644
--- 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
@@ -39,10 +39,10 @@
 <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="true"/>
+<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.dropdown.demo@default:default,org.eclipse.rap.addons.dropdown@default:default,org.eclipse.rap.clientscripting@default:default"/>
+<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 dea5eff..a3062b6 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
@@ -9,6 +9,5 @@
 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.autosuggest.internal;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"
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 e92674c..0e49ce6 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,12 +13,12 @@
 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;
 import org.eclipse.rap.addons.dropdown.demo.data.KFZ;
-import org.eclipse.rap.addons.dropdown.demo.scripts.CustomAutoSuggestScript;
-import org.eclipse.rap.clientscripting.Script;
+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;
@@ -48,8 +48,8 @@
     }
 
     @Override
-    protected Script getAutoSuggestScript() {
-      return CustomAutoSuggestScript.getInstance();
+    protected AutoSuggestClientListener getAutoSuggestListener() {
+      return CustomAutoSuggestClientListener.getInstance();
     }
 
   }
diff --git a/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/scripts/CustomAutoSuggestScript.java b/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/scripts/CustomAutoSuggestClientListener.java
similarity index 70%
rename from examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/scripts/CustomAutoSuggestScript.java
rename to examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/scripts/CustomAutoSuggestClientListener.java
index cc028d4..1d24309 100644
--- a/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/scripts/CustomAutoSuggestScript.java
+++ b/examples/org.eclipse.rap.addons.dropdown.demo/src/org/eclipse/rap/addons/dropdown/demo/scripts/CustomAutoSuggestClientListener.java
@@ -10,17 +10,17 @@
  ******************************************************************************/
 package org.eclipse.rap.addons.dropdown.demo.scripts;
 
-import org.eclipse.rap.clientscripting.Script;
+import org.eclipse.rap.addons.autosuggest.AutoSuggestClientListener;
 import org.eclipse.rap.rwt.SingletonUtil;
 
 
-public class CustomAutoSuggestScript extends Script {
+public class CustomAutoSuggestClientListener extends AutoSuggestClientListener {
 
-  public static CustomAutoSuggestScript getInstance() {
-    return SingletonUtil.getSessionInstance( CustomAutoSuggestScript.class );
+  public static CustomAutoSuggestClientListener getInstance() {
+    return SingletonUtil.getSessionInstance( CustomAutoSuggestClientListener.class );
   }
 
-  private CustomAutoSuggestScript() {
+  private CustomAutoSuggestClientListener() {
     super( getText() );
   }
 
