diff --git a/bundles/org.eclipse.rap.clientscripting/src/org/eclipse/rap/clientscripting/internal/ClientFunction.java b/bundles/org.eclipse.rap.clientscripting/src/org/eclipse/rap/clientscripting/internal/ClientFunction.java
index 817b612..b61a123 100644
--- a/bundles/org.eclipse.rap.clientscripting/src/org/eclipse/rap/clientscripting/internal/ClientFunction.java
+++ b/bundles/org.eclipse.rap.clientscripting/src/org/eclipse/rap/clientscripting/internal/ClientFunction.java
@@ -45,9 +45,8 @@
   }
 
   protected ClientListenerBinding addTo( String targetId, int eventType ) {
-    // TODO : binding created twice?
-    ClientListenerBinding binding = new ClientListenerBinding( this, targetId, eventType );
-    if( !bindings.contains( binding ) ) {
+    if( findBinding( targetId, eventType ) == null ) {
+      ClientListenerBinding binding = new ClientListenerBinding( this, targetId, eventType );
       bindings.add( binding );
       return binding;
     } else {
diff --git a/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/internal/ClientFunction_Test.java b/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/internal/ClientFunction_Test.java
index c3af7e0..d1b2041 100644
--- a/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/internal/ClientFunction_Test.java
+++ b/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/internal/ClientFunction_Test.java
@@ -19,6 +19,7 @@
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 
 import org.eclipse.rap.rwt.remote.Connection;
@@ -31,6 +32,8 @@
 public class ClientFunction_Test {
 
   private static final String TARGET_ID = "w101";
+  private static final String CLIENT_LISTENER_TYPE =  "rwt.clientscripting.Listener";
+  private static final String LISTENER_BINDING_TYPE =  "rwt.clientscripting.EventBinding";
 
   private ClientFunction function;
 
@@ -57,7 +60,7 @@
 
   @Test
   public void testCreation_createsRemoteObject() {
-    Connection connection = fakeConnection( mock( RemoteObject.class ) );
+    Connection connection = fakeConnection( mock( RemoteObject.class ), CLIENT_LISTENER_TYPE );
 
     new ClientFunction( "script code" );
 
@@ -67,7 +70,7 @@
   @Test
   public void testCreation_initializesRemoteObject() {
     RemoteObject remoteObject = mock( RemoteObject.class );
-    fakeConnection( remoteObject );
+    fakeConnection( remoteObject, CLIENT_LISTENER_TYPE );
 
     new ClientFunction( "script code" );
 
@@ -84,10 +87,13 @@
 
   @Test
   public void testAddTo_ignoresSubsequentCalls() {
+    Connection connection = fakeConnection( mock( RemoteObject.class ), LISTENER_BINDING_TYPE );
+
     function.addTo( TARGET_ID, SWT.KeyDown );
     function.addTo( TARGET_ID, SWT.KeyDown );
 
     assertEquals( 1, function.getBindings().size() );
+    verify( connection, times( 1 ) ).createRemoteObject( eq( LISTENER_BINDING_TYPE ) );
   }
 
   @Test
diff --git a/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/internal/ClientListenerBinding_Test.java b/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/internal/ClientListenerBinding_Test.java
index 5ad71ff..f36d21a 100644
--- a/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/internal/ClientListenerBinding_Test.java
+++ b/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/internal/ClientListenerBinding_Test.java
@@ -30,6 +30,8 @@
 
   private static final String TARGET_ID_1 = "w101";
   private static final String TARGET_ID_2 = "w102";
+  private static final String LISTENER_BINDING_TYPE =  "rwt.clientscripting.EventBinding";
+
   private ClientListener listener1;
   private ClientListener listener2;
   private ClientListenerBinding binding;
@@ -77,7 +79,7 @@
 
   @Test
   public void testCreation_createsRemoteObject() {
-    Connection connection = fakeConnection( mock( RemoteObject.class ) );
+    Connection connection = fakeConnection( mock( RemoteObject.class ), LISTENER_BINDING_TYPE );
 
     binding = new ClientListenerBinding( listener1, TARGET_ID_1, ClientListener.KeyDown );
 
@@ -87,7 +89,7 @@
   @Test
   public void testCreation_initializesRemoteObject() {
     RemoteObject remoteObject = mock( RemoteObject.class );
-    fakeConnection( remoteObject );
+    fakeConnection( remoteObject, LISTENER_BINDING_TYPE );
 
     binding = new ClientListenerBinding( listener1, TARGET_ID_1, ClientListener.KeyDown );
 
@@ -99,7 +101,7 @@
   @Test
   public void testDispose_destroysRemoteObject() {
     RemoteObject remoteObject = mock( RemoteObject.class );
-    fakeConnection( remoteObject );
+    fakeConnection( remoteObject, LISTENER_BINDING_TYPE );
     binding = new ClientListenerBinding( listener1, TARGET_ID_1, ClientListener.KeyDown );
 
     binding.dispose();
@@ -110,7 +112,7 @@
   @Test
   public void testDispose_mayBeCalledTwice() {
     RemoteObject remoteObject = mock( RemoteObject.class );
-    fakeConnection( remoteObject );
+    fakeConnection( remoteObject, LISTENER_BINDING_TYPE );
     binding = new ClientListenerBinding( listener1, TARGET_ID_1, ClientListener.KeyDown );
 
     binding.dispose();
diff --git a/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/internal/TestUtil.java b/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/internal/TestUtil.java
index 4060f09..12f210b 100644
--- a/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/internal/TestUtil.java
+++ b/tests/org.eclipse.rap.clientscripting.test/src/org/eclipse/rap/clientscripting/internal/TestUtil.java
@@ -10,7 +10,7 @@
  ******************************************************************************/
 package org.eclipse.rap.clientscripting.internal;
 
-import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -24,9 +24,9 @@
 
 public class TestUtil {
 
-  public static Connection fakeConnection( RemoteObject remoteObject ) {
+  public static Connection fakeConnection( RemoteObject remoteObject, String remoteType ) {
     Connection connection = mock( Connection.class );
-    when( connection.createRemoteObject( anyString() ) ).thenReturn( remoteObject );
+    when( connection.createRemoteObject( eq( remoteType ) ) ).thenReturn( remoteObject );
     Fixture.fakeConnection( connection );
     return connection;
   }
