diff --git a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/ClientScriptingUtil.js b/bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/ClientScriptingUtil.js
similarity index 92%
rename from bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/ClientScriptingUtil.js
rename to bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/ClientScriptingUtil.js
index c935814..8516a4e 100644
--- a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/ClientScriptingUtil.js
+++ b/bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/ClientScriptingUtil.js
@@ -11,11 +11,11 @@
 
 (function() {
 
-rwt.qx.Class.createNamespace( "org.eclipse.rap.clientscripting", {} );
+rwt.qx.Class.createNamespace( "rwt.scripting", {} );
 
 var ObjectRegistry = rwt.remote.ObjectRegistry;
 
-org.eclipse.rap.clientscripting.ClientScriptingUtil = {
+rwt.scripting.ClientScriptingUtil = {
 
   _wrapperHelper : function(){},
 
@@ -50,7 +50,7 @@
   },
 
   getNativeEventSource : function( source, eventType ) {
-    var SWT = org.eclipse.rap.clientscripting.SWT;
+    var SWT = rwt.scripting.SWT;
     var result;
     if( source.classname === "rwt.widgets.List" && eventType === "Selection" ) {
       result = source.getManager();
@@ -79,7 +79,7 @@
   },
 
   postProcessEvent : function( event, wrappedEvent, originalEvent ) {
-    var SWT = org.eclipse.rap.clientscripting.SWT;
+    var SWT = rwt.scripting.SWT;
     switch( event.type ) {
       case SWT.Verify:
         this._postProcessVerifyEvent( event, wrappedEvent, originalEvent );
@@ -92,8 +92,8 @@
   },
 
   initEvent : function( event, type, target, originalEvent ) {
-    var SWT = org.eclipse.rap.clientscripting.SWT;
-    event.widget = org.eclipse.rap.clientscripting.WidgetProxyFactory.getWidgetProxy( target );
+    var SWT = rwt.scripting.SWT;
+    event.widget = rwt.scripting.WidgetProxyFactory.getWidgetProxy( target );
     event.type = type;
     switch( type ) {
       case SWT.KeyDown:
@@ -119,7 +119,7 @@
 
   _initKeyEvent : function( event, originalEvent ) {
     var charCode = originalEvent.getCharCode();
-    var SWT = org.eclipse.rap.clientscripting.SWT;
+    var SWT = rwt.scripting.SWT;
     if( charCode !== 0 ) {
       event.character = String.fromCharCode( charCode );
       // TODO [tb] : keyCode will be off when character is not a-z
@@ -168,13 +168,13 @@
   },
 
   _getGCFor : function( widget ) {
-    var gc = widget.getUserData( org.eclipse.rap.clientscripting.WidgetProxyFactory._GC_KEY );
+    var gc = widget.getUserData( rwt.scripting.WidgetProxyFactory._GC_KEY );
     if( gc == null ) {
       gc = this._findExistingGC( widget );
       if( gc == null ) {
         gc = new rwt.widgets.GC( widget );
       }
-      widget.setUserData( org.eclipse.rap.clientscripting.WidgetProxyFactory._GC_KEY, gc );
+      widget.setUserData( rwt.scripting.WidgetProxyFactory._GC_KEY, gc );
     }
     return gc;
   },
@@ -239,7 +239,7 @@
   },
 
   _setStateMask : function( event, originalEvent ) {
-    var SWT = org.eclipse.rap.clientscripting.SWT;
+    var SWT = rwt.scripting.SWT;
     event.stateMask |= originalEvent.isShiftPressed() ? SWT.SHIFT : 0;
     event.stateMask |= originalEvent.isCtrlPressed() ? SWT.CTRL : 0;
     event.stateMask |= originalEvent.isAltPressed() ? SWT.ALT : 0;
diff --git a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/EventBinding.js b/bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/EventBinding.js
similarity index 82%
rename from bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/EventBinding.js
rename to bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/EventBinding.js
index 9fbdb87..3290f89 100644
--- a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/EventBinding.js
+++ b/bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/EventBinding.js
@@ -11,10 +11,10 @@
 
 (function(){
 
-rwt.qx.Class.createNamespace( "org.eclipse.rap.clientscripting", {} );
+rwt.qx.Class.createNamespace( "rwt.scripting", {} );
 
-org.eclipse.rap.clientscripting.EventBinding = function( source, eventType, targetFunction ) {
-  var ClientScriptingUtil = org.eclipse.rap.clientscripting.ClientScriptingUtil;
+rwt.scripting.EventBinding = function( source, eventType, targetFunction ) {
+  var ClientScriptingUtil = rwt.scripting.ClientScriptingUtil;
   try {
     this._eventType = eventType;
     this._source = source;
@@ -35,7 +35,7 @@
   }
 };
 
-org.eclipse.rap.clientscripting.EventBinding.prototype = {
+rwt.scripting.EventBinding.prototype = {
 
   _bind : function() {
     if( this._public ) {
@@ -55,9 +55,9 @@
 
   _processEvent : function( event ) {
     try {
-      var EventProxy = org.eclipse.rap.clientscripting.EventProxy;
-      var ClientScriptingUtil = org.eclipse.rap.clientscripting.ClientScriptingUtil;
-      var SWT = org.eclipse.rap.clientscripting.SWT;
+      var EventProxy = rwt.scripting.EventProxy;
+      var ClientScriptingUtil = rwt.scripting.ClientScriptingUtil;
+      var SWT = rwt.scripting.SWT;
       var eventProxy = new EventProxy( SWT[ this._eventType ], this._source, event );
       var wrappedEventProxy = ClientScriptingUtil.wrapAsProto( eventProxy );
       this._targetFunction( wrappedEventProxy );
diff --git a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/EventProxy.js b/bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/EventProxy.js
similarity index 89%
rename from bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/EventProxy.js
rename to bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/EventProxy.js
index d9707c8..79e7828 100644
--- a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/EventProxy.js
+++ b/bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/EventProxy.js
@@ -9,20 +9,20 @@
  *    EclipseSource - initial API and implementation
  ******************************************************************************/
 
-rwt.qx.Class.createNamespace( "org.eclipse.rap.clientscripting", {} );
+rwt.qx.Class.createNamespace( "rwt.scripting", {} );
 
-org.eclipse.rap.clientscripting.EventProxy = function( eventType, target, originalEvent ) {
-  var ClientScriptingUtil = org.eclipse.rap.clientscripting.ClientScriptingUtil;
+rwt.scripting.EventProxy = function( eventType, target, originalEvent ) {
+  var ClientScriptingUtil = rwt.scripting.ClientScriptingUtil;
   ClientScriptingUtil.initEvent( this, eventType, target, originalEvent );
 };
 
-org.eclipse.rap.clientscripting.EventProxy.prototype = {
+rwt.scripting.EventProxy.prototype = {
 
   /**
    * An object representing the widget that issued the event.
    * It has setter and getter named after the properties used in the RAP protocol.
    * Only a subset of getter is currently supported.
-   * (See org.eclipse.rap.clientscripting.ClientScriptingUtil#attachGetter.)
+   * (See rwt.scripting.ClientScriptingUtil#attachGetter.)
    * Setting properties might result in server and client getting out-of-sync in RAP 1.5,
    * unless it is a property that can be changed by user-input (e.g. selection).
    */
@@ -131,6 +131,6 @@
 
 };
 
-org.eclipse.rap.clientscripting.EventProxy.disposeEventProxy = function( eventProxy ) {
+rwt.scripting.EventProxy.disposeEventProxy = function( eventProxy ) {
   eventProxy.widget = null;
 };
diff --git a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/Function.js b/bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/Function.js
similarity index 84%
rename from bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/Function.js
rename to bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/Function.js
index c8606b2..44665de 100644
--- a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/Function.js
+++ b/bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/Function.js
@@ -9,16 +9,16 @@
  *    EclipseSource - initial API and implementation
  ******************************************************************************/
 
-rwt.qx.Class.createNamespace( "org.eclipse.rap.clientscripting", {} );
+rwt.qx.Class.createNamespace( "rwt.scripting", {} );
 
 // TODO [tb] : consider a name thats not a native Constructor ( "Function" )
 
 /*global handleEvent:false */
-org.eclipse.rap.clientscripting.Function = function( /* code */ ) {
+rwt.scripting.Function = function( /* code */ ) {
   // NOTE: the eval'd code will have the same scope as this function, therefore no local
   // variables except the "imports" are used.
   // TODO [tb] : It would be cleaner if the "import" was part of the eval'd code
-  var SWT = org.eclipse.rap.clientscripting.SWT;
+  var SWT = rwt.scripting.SWT;
   try {
     eval( arguments[ 0 ] );
   } catch( ex ) {
@@ -35,7 +35,7 @@
   }
 };
 
-org.eclipse.rap.clientscripting.Function.prototype = {
+rwt.scripting.Function.prototype = {
 
   call : function() {
     this._function.apply( window, arguments );
diff --git a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/SWT.js b/bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/SWT.js
similarity index 98%
rename from bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/SWT.js
rename to bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/SWT.js
index e189a4e..73051e7 100644
--- a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/SWT.js
+++ b/bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/SWT.js
@@ -9,13 +9,13 @@
  *    EclipseSource - initial API and implementation
  ******************************************************************************/
 
-rwt.qx.Class.createNamespace( "org.eclipse.rap.clientscripting", {} );
+rwt.qx.Class.createNamespace( "rwt.scripting", {} );
 
 
 /**
  * Note: Thise class is available within ClientScriptingFunction simply as "SWT" (no namespace)
  */
-org.eclipse.rap.clientscripting.SWT = {
+rwt.scripting.SWT = {
 
   /**
    * The key down event type
diff --git a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/WidgetProxyFactory.js b/bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/WidgetProxyFactory.js
similarity index 89%
rename from bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/WidgetProxyFactory.js
rename to bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/WidgetProxyFactory.js
index e9cc6c1..1346fa4 100644
--- a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/WidgetProxyFactory.js
+++ b/bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/WidgetProxyFactory.js
@@ -13,12 +13,12 @@
 
 var ObjectRegistry = rwt.remote.ObjectRegistry;
 
-rwt.qx.Class.createNamespace( "org.eclipse.rap.clientscripting", {} );
+rwt.qx.Class.createNamespace( "rwt.scripting", {} );
 
-org.eclipse.rap.clientscripting.WidgetProxyFactory = {
+rwt.scripting.WidgetProxyFactory = {
 
-  _PROXY_KEY : "org.eclipse.rap.clientscripting.WidgetProxyFactory.PROXY",
-  _GC_KEY : "org.eclipse.rap.clientscripting.WidgetProxyFactory.GC",
+  _PROXY_KEY : "rwt.scripting.WidgetProxyFactory.PROXY",
+  _GC_KEY : "rwt.scripting.WidgetProxyFactory.GC",
 
   getWidgetProxy : function( widget ) {
     // TODO [tb] : this delegates back to _initWrapper, see init.js. Should be simplified in RAP 2.2
@@ -33,7 +33,7 @@
       this._attachControlMethods( wrapper, originalWidget );
     }
     this._addDisposeListener( originalWidget, function() {
-      org.eclipse.rap.clientscripting.WidgetProxyFactory._disposeWidgetProxy( originalWidget );
+      rwt.scripting.WidgetProxyFactory._disposeWidgetProxy( originalWidget );
     } );
   },
 
@@ -48,8 +48,8 @@
   _disposeWidgetProxy : function( widget ) {
     var protoInstance = widget.getUserData( this._PROXY_KEY );
     var userData = widget.getUserData( rwt.remote.HandlerUtil.SERVER_DATA );
-    org.eclipse.rap.clientscripting.WidgetProxyFactory._disposeObject( protoInstance );
-    org.eclipse.rap.clientscripting.WidgetProxyFactory._disposeObject( userData );
+    rwt.scripting.WidgetProxyFactory._disposeObject( protoInstance );
+    rwt.scripting.WidgetProxyFactory._disposeObject( userData );
   },
 
   _disposeObject : function( object ) {
@@ -147,7 +147,7 @@
     }
     var property = args[ 0 ];
     var value = args[ 1 ];
-    var USERDATA_KEY = org.eclipse.rap.clientscripting.WidgetProxyFactory._USERDATA_KEY;
+    var USERDATA_KEY = rwt.scripting.WidgetProxyFactory._USERDATA_KEY;
     var data = rwt.remote.HandlerUtil.getServerData( source );
     data[ property ] = value;
   },
@@ -196,7 +196,7 @@
   },
 
   _initGC : function( widget ) {
-    var gc = org.eclipse.rap.clientscripting.ClientScriptingUtil._getGCFor( widget );
+    var gc = rwt.scripting.ClientScriptingUtil._getGCFor( widget );
     var width = widget.getInnerWidth();
     var height = widget.getInnerHeight();
     var fillStyle = widget.getBackgroundColor();
diff --git a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/EventBindingAdapter.js b/bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/handler/EventBindingHandler.js
similarity index 92%
rename from bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/EventBindingAdapter.js
rename to bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/handler/EventBindingHandler.js
index db81db3..ebb8256 100644
--- a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/EventBindingAdapter.js
+++ b/bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/handler/EventBindingHandler.js
@@ -15,7 +15,7 @@
 
   factory : function( properties ) {
     var ObjectRegistry = rwt.remote.ObjectRegistry;
-    var EventBinding = org.eclipse.rap.clientscripting.EventBinding;
+    var EventBinding = rwt.scripting.EventBinding;
     var source = ObjectRegistry.getObject( properties.targetObject );
     var eventType = properties.eventType;
     var targetFunction = ObjectRegistry.getObject( properties.listener );
diff --git a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/ListenerAdapter.js b/bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/handler/ListenerHandler.js
similarity index 91%
rename from bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/ListenerAdapter.js
rename to bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/handler/ListenerHandler.js
index d76cc3b..d1963f6 100644
--- a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/ListenerAdapter.js
+++ b/bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/handler/ListenerHandler.js
@@ -16,7 +16,7 @@
     if( !scriptCode ) {
       scriptCode = rap.getObject( properties.scriptId ).getText();
     }
-    return new org.eclipse.rap.clientscripting.Function( scriptCode );
+    return new rwt.scripting.Function( scriptCode );
   }
 
 } );
diff --git a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/ScriptHandler.js b/bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/handler/ScriptHandler.js
similarity index 100%
rename from bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/ScriptHandler.js
rename to bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/handler/ScriptHandler.js
diff --git a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/init.js b/bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/init.js
similarity index 84%
rename from bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/init.js
rename to bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/init.js
index 39ac256..7fca2f6 100644
--- a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/init.js
+++ b/bundles/org.eclipse.rap.clientscripting/js/rwt/scripting/init.js
@@ -18,9 +18,9 @@
   var getWrapperFor = rap._.getWrapperFor;
   rap._.getWrapperFor = function( obj ) {
     var result = getWrapperFor.call( rap._, obj );
-    var PROXY_KEY = org.eclipse.rap.clientscripting.WidgetProxyFactory._PROXY_KEY;
+    var PROXY_KEY = rwt.scripting.WidgetProxyFactory._PROXY_KEY;
     if( obj.getUserData( PROXY_KEY ) == null ) {
-     org.eclipse.rap.clientscripting.WidgetProxyFactory._initWrapper( obj, result );
+     rwt.scripting.WidgetProxyFactory._initWrapper( obj, result );
      obj.setUserData( PROXY_KEY, result );
     }
     return result;
diff --git a/bundles/org.eclipse.rap.clientscripting/src/org/eclipse/rap/clientscripting/internal/resources/ClientScriptingResources.java b/bundles/org.eclipse.rap.clientscripting/src/org/eclipse/rap/clientscripting/internal/resources/ClientScriptingResources.java
index 2d8b535..31e137b 100644
--- a/bundles/org.eclipse.rap.clientscripting/src/org/eclipse/rap/clientscripting/internal/resources/ClientScriptingResources.java
+++ b/bundles/org.eclipse.rap.clientscripting/src/org/eclipse/rap/clientscripting/internal/resources/ClientScriptingResources.java
@@ -24,17 +24,17 @@
 public final class ClientScriptingResources {
 
   private static final String REGISTER_NAME = "clientscripting.js";
-  private static final String PREFIX = "org/eclipse/rap/clientscripting/";
+  private static final String PREFIX = "rwt/scripting/";
   private static final String[] ALL_RESOURCES = {
     "ClientScriptingUtil.js",
-    "EventBindingAdapter.js",
+    "handler/EventBindingHandler.js",
     "EventBinding.js",
     "EventProxy.js",
     "Function.js",
-    "ListenerAdapter.js",
+    "handler/ListenerHandler.js",
     "SWT.js",
     "WidgetProxyFactory.js",
-    "ScriptHandler.js",
+    "handler/ScriptHandler.js",
     "init.js"
   };
 
diff --git a/tests/org.eclipse.rap.clientscripting.jstest/js/ReferenceGen.js b/tests/org.eclipse.rap.clientscripting.jstest/js/ReferenceGen.js
index 20e810d..896cb8f 100644
--- a/tests/org.eclipse.rap.clientscripting.jstest/js/ReferenceGen.js
+++ b/tests/org.eclipse.rap.clientscripting.jstest/js/ReferenceGen.js
@@ -69,7 +69,7 @@
   text += nl;
   text += "## Available Getter:" + nl;
 
-  var widgets = org.eclipse.rap.clientscripting.ClientScriptingUtil._getterMapping;
+  var widgets = rwt.scripting.ClientScriptingUtil._getterMapping;
 
   for( var key in widgets ) {
     var type = "org.eclipse.swt.widget" + key.slice( key.lastIndexOf( "." ) );
diff --git a/tests/org.eclipse.rap.clientscripting.jstest/js/org/eclipse/rap/clientscripting/EventBinding_Test.js b/tests/org.eclipse.rap.clientscripting.jstest/js/org/eclipse/rap/clientscripting/EventBinding_Test.js
index af324de..5931107 100644
--- a/tests/org.eclipse.rap.clientscripting.jstest/js/org/eclipse/rap/clientscripting/EventBinding_Test.js
+++ b/tests/org.eclipse.rap.clientscripting.jstest/js/org/eclipse/rap/clientscripting/EventBinding_Test.js
@@ -11,12 +11,12 @@
 
 (function() {
 
-var EventBinding = org.eclipse.rap.clientscripting.EventBinding;
-var EventProxy = org.eclipse.rap.clientscripting.EventProxy;
+var EventBinding = rwt.scripting.EventBinding;
+var EventProxy = rwt.scripting.EventProxy;
 var TestUtil = org.eclipse.rwt.test.fixture.TestUtil;
 var Processor = rwt.remote.MessageProcessor;
 var ObjectManager = rwt.remote.ObjectRegistry;
-var SWT = org.eclipse.rap.clientscripting.SWT;
+var SWT = rwt.scripting.SWT;
 var EventHandlerUtil = rwt.event.EventHandlerUtil;
 
 var text;
diff --git a/tests/org.eclipse.rap.clientscripting.jstest/js/org/eclipse/rap/clientscripting/EventProxy_Test.js b/tests/org.eclipse.rap.clientscripting.jstest/js/org/eclipse/rap/clientscripting/EventProxy_Test.js
index 984eee6..b3dab80 100644
--- a/tests/org.eclipse.rap.clientscripting.jstest/js/org/eclipse/rap/clientscripting/EventProxy_Test.js
+++ b/tests/org.eclipse.rap.clientscripting.jstest/js/org/eclipse/rap/clientscripting/EventProxy_Test.js
@@ -10,13 +10,13 @@
  ******************************************************************************/
 (function() {
 
-var EventProxy = org.eclipse.rap.clientscripting.EventProxy;
-var EventBinding = org.eclipse.rap.clientscripting.EventBinding;
+var EventProxy = rwt.scripting.EventProxy;
+var EventBinding = rwt.scripting.EventBinding;
 var TestUtil = org.eclipse.rwt.test.fixture.TestUtil;
 var Processor = rwt.remote.MessageProcessor;
 var ObjectManager = rwt.remote.ObjectRegistry;
-var WidgetProxyFactory = org.eclipse.rap.clientscripting.WidgetProxyFactory;
-var SWT = org.eclipse.rap.clientscripting.SWT;
+var WidgetProxyFactory = rwt.scripting.WidgetProxyFactory;
+var SWT = rwt.scripting.SWT;
 
 var text;
 var shell;
diff --git a/tests/org.eclipse.rap.clientscripting.jstest/js/org/eclipse/rap/clientscripting/Function_Test.js b/tests/org.eclipse.rap.clientscripting.jstest/js/org/eclipse/rap/clientscripting/Function_Test.js
index bfc697a..b3d292b 100644
--- a/tests/org.eclipse.rap.clientscripting.jstest/js/org/eclipse/rap/clientscripting/Function_Test.js
+++ b/tests/org.eclipse.rap.clientscripting.jstest/js/org/eclipse/rap/clientscripting/Function_Test.js
@@ -11,8 +11,8 @@
 
 (function() {
 
-var Function = org.eclipse.rap.clientscripting.Function;
-var SWT = org.eclipse.rap.clientscripting.SWT;
+var Function = rwt.scripting.Function;
+var SWT = rwt.scripting.SWT;
 
 rwt.qx.Class.define( "org.eclipse.rap.clientscripting.Function_Test", {
 
diff --git a/tests/org.eclipse.rap.clientscripting.jstest/js/org/eclipse/rap/clientscripting/Script_Test.js b/tests/org.eclipse.rap.clientscripting.jstest/js/org/eclipse/rap/clientscripting/Script_Test.js
index 8fea7b1..c94569b 100644
--- a/tests/org.eclipse.rap.clientscripting.jstest/js/org/eclipse/rap/clientscripting/Script_Test.js
+++ b/tests/org.eclipse.rap.clientscripting.jstest/js/org/eclipse/rap/clientscripting/Script_Test.js
@@ -11,8 +11,8 @@
 
 (function() {
 
-var Function = org.eclipse.rap.clientscripting.Function;
-var SWT = org.eclipse.rap.clientscripting.SWT;
+var Function = rwt.scripting.Function;
+var SWT = rwt.scripting.SWT;
 var MessageProcessor = rwt.remote.MessageProcessor;
 
 rwt.qx.Class.define( "org.eclipse.rap.clientscripting.Script_Test", {
diff --git a/tests/org.eclipse.rap.clientscripting.jstest/js/org/eclipse/rap/clientscripting/WidgetProxyFactory_Test.js b/tests/org.eclipse.rap.clientscripting.jstest/js/org/eclipse/rap/clientscripting/WidgetProxyFactory_Test.js
index 4dbf50d..659d373 100644
--- a/tests/org.eclipse.rap.clientscripting.jstest/js/org/eclipse/rap/clientscripting/WidgetProxyFactory_Test.js
+++ b/tests/org.eclipse.rap.clientscripting.jstest/js/org/eclipse/rap/clientscripting/WidgetProxyFactory_Test.js
@@ -14,9 +14,9 @@
 var TestUtil = org.eclipse.rwt.test.fixture.TestUtil;
 var Processor = rwt.remote.MessageProcessor;
 var ObjectManager = rwt.remote.ObjectRegistry;
-var WidgetProxyFactory = org.eclipse.rap.clientscripting.WidgetProxyFactory;
-var EventBinding = org.eclipse.rap.clientscripting.EventBinding;
-var SWT = org.eclipse.rap.clientscripting.SWT;
+var WidgetProxyFactory = rwt.scripting.WidgetProxyFactory;
+var EventBinding = rwt.scripting.EventBinding;
+var SWT = rwt.scripting.SWT;
 
 var text;
 
diff --git a/tests/org.eclipse.rap.clientscripting.jstest/src/org/eclipse/rap/clientscripting/internal/ClientScriptingResourcesContribution.java b/tests/org.eclipse.rap.clientscripting.jstest/src/org/eclipse/rap/clientscripting/internal/ClientScriptingResourcesContribution.java
index 3b13660..5a2921c 100644
--- a/tests/org.eclipse.rap.clientscripting.jstest/src/org/eclipse/rap/clientscripting/internal/ClientScriptingResourcesContribution.java
+++ b/tests/org.eclipse.rap.clientscripting.jstest/src/org/eclipse/rap/clientscripting/internal/ClientScriptingResourcesContribution.java
@@ -19,18 +19,18 @@
 
 public class ClientScriptingResourcesContribution implements TestContribution {
 
-  private static final String PATH_PREFIX = "/org/eclipse/rap/clientscripting/";
+  private static final String PATH_PREFIX = "/rwt/scripting/";
 
   private static final String[] RESOURCES = new String[] {
     "ClientScriptingUtil.js",
     "SWT.js",
     "Function.js",
-    "ListenerAdapter.js",
+    "handler/ListenerHandler.js",
     "EventBinding.js",
-    "EventBindingAdapter.js",
+    "handler/EventBindingHandler.js",
     "EventProxy.js",
     "WidgetProxyFactory.js",
-    "ScriptHandler.js",
+    "handler/ScriptHandler.js",
     "init.js"
   };
 
