diff --git a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/ClientScriptingUtil.js b/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/ClientScriptingUtil.js
index 73b1e3f..ea29a46 100644
--- a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/ClientScriptingUtil.js
+++ b/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/ClientScriptingUtil.js
@@ -9,7 +9,7 @@
  *    EclipseSource - initial API and implementation
  ******************************************************************************/
 
-qx.Class.createNamespace( "org.eclipse.rap.clientscripting", {} );
+rwt.qx.Class.createNamespace( "org.eclipse.rap.clientscripting", {} );
 
 org.eclipse.rap.clientscripting.ClientScriptingUtil = {
 
@@ -103,12 +103,12 @@
   },
 
   attachSetter : function( proxy, source ) {
-    var ObjectManager = rwt.protocol.ObjectRegistry;
+    var ObjectManager = rwt.remote.ObjectRegistry;
     var id = ObjectManager.getId( source );
-    var properties = ObjectManager.getEntry( id ).adapter.properties;
+    var properties = ObjectManager.getEntry( id ).handler.properties;
     for( var i = 0; i < properties.length; i++ ) {
       var property = properties[ i ];
-      proxy[ "set" + rwt.util.String.toFirstUp( property ) ] =
+      proxy[ "set" + rwt.util.Strings.toFirstUp( property ) ] =
         this._createSetter( id, property );
     }
   },
@@ -182,7 +182,7 @@
   _setProperty : function( id, property, value ) {
     var props = {};
     props[ property ] = value;
-    rwt.protocol.MessageProcessor.processOperation( {
+    rwt.remote.MessageProcessor.processOperation( {
       "target" : id,
       "action" : "set",
       "properties" : props
@@ -252,7 +252,7 @@
 
   _initMouseEvent : function( event, originalEvent ) {
     var target = originalEvent.getTarget()._getTargetNode();
-    var offset = qx.bom.element.Location.get( target, "scroll" );
+    var offset = rwt.html.Location.get( target, "scroll" );
     event.x = originalEvent.getPageX() - offset.left;
     event.y = originalEvent.getPageY() - offset.top;
     if( originalEvent.isLeftButtonPressed() ) {
@@ -275,7 +275,7 @@
     if( gc == null ) {
       gc = this._findExistingGC( widget );
       if( gc == null ) {
-        gc = new org.eclipse.swt.graphics.GC( widget );
+        gc = new rwt.widgets.GC( widget );
       }
       widget.setUserData( org.eclipse.rap.clientscripting.WidgetProxy._GC_KEY, gc );
     }
@@ -299,8 +299,8 @@
       width,
       height,
       font,
-      rwt.util.ColorUtil.stringToRgb( fillStyle ? fillStyle : "#000000" ),
-      rwt.util.ColorUtil.stringToRgb( strokeStyle ? strokeStyle : "#000000" )
+      rwt.util.Colors.stringToRgb( fillStyle ? fillStyle : "#000000" ),
+      rwt.util.Colors.stringToRgb( strokeStyle ? strokeStyle : "#000000" )
     );
   },
 
@@ -308,7 +308,7 @@
     var children = widget._getTargetNode().childNodes;
     var result = null;
     for( var i = 0; i < children.length && result == null; i++ ) {
-      if( children[ i ].rwtObject instanceof org.eclipse.swt.graphics.GC ) {
+      if( children[ i ].rwtObject instanceof rwt.widgets.GC ) {
         result = children[ i ].rwtObject;
       }
     }
@@ -374,7 +374,7 @@
   _getLastKeyCode : function() {
     // NOTE : While this is a private field, this mechanism must be integrated with
     // KeyEventSupport anyway to support the doit flag better.
-    return org.eclipse.rwt.KeyEventSupport.getInstance()._currentKeyCode;
+    return rwt.remote.KeyEventSupport.getInstance()._currentKeyCode;
   },
 
   _getDiff : function( newValue, oldValue, oldSel, keyCode ) {
diff --git a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/EventBinding.js b/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/EventBinding.js
index 5fe77ef..314a199 100644
--- a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/EventBinding.js
+++ b/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/EventBinding.js
@@ -9,7 +9,7 @@
  *    EclipseSource - initial API and implementation
  ******************************************************************************/
 
-qx.Class.createNamespace( "org.eclipse.rap.clientscripting", {} );
+rwt.qx.Class.createNamespace( "org.eclipse.rap.clientscripting", {} );
 
 org.eclipse.rap.clientscripting.EventBinding = function( source, eventType, targetFunction ) {
   try {
diff --git a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/EventBindingAdapter.js b/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/EventBindingAdapter.js
index df4b7c3..64a0149 100644
--- a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/EventBindingAdapter.js
+++ b/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/EventBindingAdapter.js
@@ -9,12 +9,12 @@
  *    EclipseSource - initial API and implementation
  ******************************************************************************/
 
-rwt.protocol.AdapterRegistry.add( "rwt.clientscripting.EventBinding", {
+rwt.remote.HandlerRegistry.add( "rwt.clientscripting.EventBinding", {
 
   factory : function( properties ) {
-    var source = rwt.protocol.ObjectRegistry.getObject( properties.targetObject );
+    var source = rwt.remote.ObjectRegistry.getObject( properties.targetObject );
     var eventType = org.eclipse.rap.clientscripting.SWT[ properties.eventType ];
-    var targetFunction = rwt.protocol.ObjectRegistry.getObject( properties.listener );
+    var targetFunction = rwt.remote.ObjectRegistry.getObject( properties.listener );
     return new org.eclipse.rap.clientscripting.EventBinding( source, eventType, targetFunction );
   }
 
diff --git a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/EventProxy.js b/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/EventProxy.js
index 3983f08..d9707c8 100644
--- a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/EventProxy.js
+++ b/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/EventProxy.js
@@ -9,7 +9,7 @@
  *    EclipseSource - initial API and implementation
  ******************************************************************************/
 
-qx.Class.createNamespace( "org.eclipse.rap.clientscripting", {} );
+rwt.qx.Class.createNamespace( "org.eclipse.rap.clientscripting", {} );
 
 org.eclipse.rap.clientscripting.EventProxy = function( eventType, target, originalEvent ) {
   var ClientScriptingUtil = org.eclipse.rap.clientscripting.ClientScriptingUtil;
diff --git a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/Function.js b/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/Function.js
index dd598d4..c8606b2 100644
--- a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/Function.js
+++ b/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/Function.js
@@ -9,7 +9,7 @@
  *    EclipseSource - initial API and implementation
  ******************************************************************************/
 
-qx.Class.createNamespace( "org.eclipse.rap.clientscripting", {} );
+rwt.qx.Class.createNamespace( "org.eclipse.rap.clientscripting", {} );
 
 // TODO [tb] : consider a name thats not a native Constructor ( "Function" )
 
diff --git a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/ListenerAdapter.js b/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/ListenerAdapter.js
index 4533a26..765673c 100644
--- a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/ListenerAdapter.js
+++ b/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/ListenerAdapter.js
@@ -9,7 +9,7 @@
  *    EclipseSource - initial API and implementation
  ******************************************************************************/
 
-rwt.protocol.AdapterRegistry.add( "rwt.clientscripting.Listener", {
+rwt.remote.HandlerRegistry.add( "rwt.clientscripting.Listener", {
 
   factory : function( properties ) {
     var code = properties.code;
diff --git a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/SWT.js b/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/SWT.js
index 6197192..5dcb747 100644
--- a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/SWT.js
+++ b/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/SWT.js
@@ -9,7 +9,7 @@
  *    EclipseSource - initial API and implementation
  ******************************************************************************/
 
-qx.Class.createNamespace( "org.eclipse.rap.clientscripting", {} );
+rwt.qx.Class.createNamespace( "org.eclipse.rap.clientscripting", {} );
 
 
 /**
diff --git a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/WidgetProxy.js b/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/WidgetProxy.js
index 4335f32..9b43955 100644
--- a/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/WidgetProxy.js
+++ b/bundles/org.eclipse.rap.clientscripting/js/org/eclipse/rap/clientscripting/WidgetProxy.js
@@ -9,14 +9,14 @@
  *    EclipseSource - initial API and implementation
  ******************************************************************************/
 
-qx.Class.createNamespace( "org.eclipse.rap.clientscripting", {} );
+rwt.qx.Class.createNamespace( "org.eclipse.rap.clientscripting", {} );
 
 org.eclipse.rap.clientscripting.WidgetProxy = function( originalWidget ) {
   var ClientScriptingUtil = org.eclipse.rap.clientscripting.ClientScriptingUtil;
   ClientScriptingUtil.attachSetter( this, originalWidget );
   ClientScriptingUtil.attachGetter( this, originalWidget );
   ClientScriptingUtil.attachUserData( this, originalWidget );
-  if( org.eclipse.swt.WidgetManager.getInstance().isControl( originalWidget ) ) {
+  if( rwt.remote.WidgetManager.getInstance().isControl( originalWidget ) ) {
     ClientScriptingUtil.attachControlMethods( this, originalWidget );
   }
   ClientScriptingUtil.addDisposeListener( originalWidget, function() {
diff --git a/tests/org.eclipse.rap.clientscripting.jstest/js/ReferenceGen.js b/tests/org.eclipse.rap.clientscripting.jstest/js/ReferenceGen.js
index 1eb310d..20e810d 100644
--- a/tests/org.eclipse.rap.clientscripting.jstest/js/ReferenceGen.js
+++ b/tests/org.eclipse.rap.clientscripting.jstest/js/ReferenceGen.js
@@ -16,8 +16,8 @@
   var nl = "</br>";
   var lv1 = "*  ";
   var text = "## Available Setter:" + nl;
-  var common = org.eclipse.rwt.protocol.AdapterUtil._controlProperties;
-  var registry = org.eclipse.rwt.protocol.AdapterRegistry._registry;
+  var common = org.eclipse.rwt.remote.HandlerUtil._controlProperties;
+  var registry = org.eclipse.rwt.remote.HandlerRegistry._registry;
 
   var ignore = [ "children", "activeKeys", "cancelKeys", "customVariant", "parent" ];
 
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 a4ad59a..542e807 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
@@ -14,17 +14,17 @@
 var EventBinding = org.eclipse.rap.clientscripting.EventBinding;
 var EventProxy = org.eclipse.rap.clientscripting.EventProxy;
 var TestUtil = org.eclipse.rwt.test.fixture.TestUtil;
-var Processor = rwt.protocol.MessageProcessor;
-var ObjectManager = rwt.protocol.ObjectRegistry;
+var Processor = rwt.remote.MessageProcessor;
+var ObjectManager = rwt.remote.ObjectRegistry;
 var SWT = org.eclipse.rap.clientscripting.SWT;
-var EventHandlerUtil = org.eclipse.rwt.EventHandlerUtil;
+var EventHandlerUtil = rwt.event.EventHandlerUtil;
 
 var text;
 var textEl;
 
-qx.Class.define( "org.eclipse.rap.clientscripting.EventBinding_Test", {
+rwt.qx.Class.define( "org.eclipse.rap.clientscripting.EventBinding_Test", {
 
-  extend : qx.core.Object,
+  extend : rwt.qx.Object,
 
   members : {
 
@@ -466,10 +466,6 @@
         "target" : "w2",
         "action" : "destroy"
       } );
-      Processor.processOperation( {
-        "target" : "w3",
-        "action" : "destroy"
-      } );
       text = null;
     },
 
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 d5a5b44..b98391a 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
@@ -13,17 +13,17 @@
 var EventProxy = org.eclipse.rap.clientscripting.EventProxy;
 var EventBinding = org.eclipse.rap.clientscripting.EventBinding;
 var TestUtil = org.eclipse.rwt.test.fixture.TestUtil;
-var Processor = rwt.protocol.MessageProcessor;
-var ObjectManager = rwt.protocol.ObjectRegistry;
+var Processor = rwt.remote.MessageProcessor;
+var ObjectManager = rwt.remote.ObjectRegistry;
 var WidgetProxy = org.eclipse.rap.clientscripting.WidgetProxy;
 var SWT = org.eclipse.rap.clientscripting.SWT;
 
 var text;
 var shell;
 
-qx.Class.define( "org.eclipse.rap.clientscripting.EventProxy_Test", {
+rwt.qx.Class.define( "org.eclipse.rap.clientscripting.EventProxy_Test", {
 
-  extend : qx.core.Object,
+  extend : rwt.qx.Object,
 
   members : {
 
@@ -121,7 +121,7 @@
         eventProxy = new EventProxy( SWT.KeyDown, text, event );
       } );
 
-      var shift = qx.event.type.DomEvent.SHIFT_MASK;
+      var shift = rwt.event.DomEvent.SHIFT_MASK;
       TestUtil.keyDown( text.getElement(), "Shift", shift );
 
       assertEquals( '\u0000', eventProxy.character );
@@ -134,8 +134,8 @@
         eventProxy = new EventProxy( SWT.KeyDown, text, event );
       } );
 
-      var shift = qx.event.type.DomEvent.SHIFT_MASK;
-      var ctrl = qx.event.type.DomEvent.CTRL_MASK;
+      var shift = rwt.event.DomEvent.SHIFT_MASK;
+      var ctrl = rwt.event.DomEvent.CTRL_MASK;
       TestUtil.keyDown( text.getElement(), "A", shift | ctrl );
 
       assertEquals( SWT.SHIFT | SWT.CTRL, eventProxy.stateMask );
@@ -191,7 +191,7 @@
 
     testMouseEventLocationWithBorder : function() {
       text.setLocation( 10, 20 );
-      text.setBorder( new org.eclipse.rwt.Border( 2, "solid", "black" ) );
+      text.setBorder( new rwt.html.Border( 2, "solid", "black" ) );
       TestUtil.flush();
       var eventProxy;
       text.addEventListener( "mousedown", function( event ) {
@@ -522,7 +522,7 @@
       Processor.processOperation( {
         "target" : "w5",
         "action" : "create",
-        "type" : "rwt.GC",
+        "type" : "rwt.widgets.GC",
         "properties" : {
           "parent" : "w4"
         }
@@ -556,7 +556,7 @@
       var canvas = ObjectManager.getObject( "w4" );
       canvas.setBackgroundColor( "#aaaaaa" );
       canvas.setTextColor( "#bbbbbb" );
-      canvas.setFont( qx.ui.core.Font.fromString( "11px bold italic Arial") );
+      canvas.setFont( rwt.html.Font.fromString( "11px bold italic Arial") );
       TestUtil.flush();
       var props;
 
@@ -566,7 +566,7 @@
           props = [
             gc.strokeStyle,
             gc.fillStyle,
-            qx.ui.core.Font.fromString( gc.font ).toCss()
+            rwt.html.Font.fromString( gc.font ).toCss()
           ];
           gc.strokeStyle = "#ff00ff";
           gc.fillStyle = "#00ff00";
@@ -626,7 +626,7 @@
       Processor.processOperation( {
         "target" : "w5",
         "action" : "create",
-        "type" : "rwt.GC",
+        "type" : "rwt.widgets.GC",
         "properties" : {
           "parent" : "w4"
         }
@@ -642,7 +642,7 @@
           props = [
             gc.strokeStyle,
             gc.fillStyle,
-            qx.ui.core.Font.fromString( gc.font ).toCss()
+            rwt.html.Font.fromString( gc.font ).toCss()
           ];
           gc.strokeStyle = "#ff00ff";
           gc.fillStyle = "#00ff00";
@@ -682,10 +682,6 @@
         "target" : "w2",
         "action" : "destroy"
       } );
-      Processor.processOperation( {
-        "target" : "w3",
-        "action" : "destroy"
-      } );
       text = null;
     },
 
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 f3d18fe..bc3bf73 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
@@ -14,9 +14,9 @@
 var Function = org.eclipse.rap.clientscripting.Function;
 var SWT = org.eclipse.rap.clientscripting.SWT;
 
-qx.Class.define( "org.eclipse.rap.clientscripting.Function_Test", {
+rwt.qx.Class.define( "org.eclipse.rap.clientscripting.Function_Test", {
 
-  extend : qx.core.Object,
+  extend : rwt.qx.Object,
 
   members : {
 
@@ -61,7 +61,7 @@
 
     testCreateFunctionByProtocol : function() {
       var code = "var handleEvent = function(){};";
-      var processor = org.eclipse.rwt.protocol.Processor;
+      var processor = rwt.remote.MessageProcessor;
 
       processor.processOperation( {
         "target" : "w3",
@@ -72,7 +72,7 @@
         }
       } );
 
-      var ObjectManager = org.eclipse.rwt.protocol.ObjectManager;
+      var ObjectManager = rwt.remote.ObjectRegistry;
       var result = ObjectManager.getObject( "w3" );
       assertTrue( result instanceof Function );
     },
diff --git a/tests/org.eclipse.rap.clientscripting.jstest/js/org/eclipse/rap/clientscripting/WidgetProxy_Test.js b/tests/org.eclipse.rap.clientscripting.jstest/js/org/eclipse/rap/clientscripting/WidgetProxy_Test.js
index 06016f4..99bf18d 100644
--- a/tests/org.eclipse.rap.clientscripting.jstest/js/org/eclipse/rap/clientscripting/WidgetProxy_Test.js
+++ b/tests/org.eclipse.rap.clientscripting.jstest/js/org/eclipse/rap/clientscripting/WidgetProxy_Test.js
@@ -12,17 +12,17 @@
 (function() {
 
 var TestUtil = org.eclipse.rwt.test.fixture.TestUtil;
-var Processor = rwt.protocol.MessageProcessor;
-var ObjectManager = rwt.protocol.ObjectRegistry;
+var Processor = rwt.remote.MessageProcessor;
+var ObjectManager = rwt.remote.ObjectRegistry;
 var WidgetProxy = org.eclipse.rap.clientscripting.WidgetProxy;
 var EventBinding = org.eclipse.rap.clientscripting.EventBinding;
 var SWT = org.eclipse.rap.clientscripting.SWT;
 
 var text;
 
-qx.Class.define( "org.eclipse.rap.clientscripting.WidgetProxy_Test", {
+rwt.qx.Class.define( "org.eclipse.rap.clientscripting.WidgetProxy_Test", {
 
-  extend : qx.core.Object,
+  extend : rwt.qx.Object,
 
   members : {
 
@@ -215,10 +215,6 @@
         "target" : "w2",
         "action" : "destroy"
       } );
-      Processor.processOperation( {
-        "target" : "w3",
-        "action" : "destroy"
-      } );
       text = null;
     }
 
