diff --git a/services/org.eclipse.sensinact.studio.preferences/.classpath b/services/org.eclipse.sensinact.studio.preferences/.classpath
index 16d067f..01836c4 100644
--- a/services/org.eclipse.sensinact.studio.preferences/.classpath
+++ b/services/org.eclipse.sensinact.studio.preferences/.classpath
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/services/org.eclipse.sensinact.studio.preferences/src/org/eclipse/sensinact/studio/preferences/ConfigurationManager.java b/services/org.eclipse.sensinact.studio.preferences/src/org/eclipse/sensinact/studio/preferences/ConfigurationManager.java
index 1c6086b..5ce796f 100644
--- a/services/org.eclipse.sensinact.studio.preferences/src/org/eclipse/sensinact/studio/preferences/ConfigurationManager.java
+++ b/services/org.eclipse.sensinact.studio.preferences/src/org/eclipse/sensinact/studio/preferences/ConfigurationManager.java
@@ -30,6 +30,7 @@
 	private static String STUDIO_NODE = "studio";
 	private static String ADDRESS_KEY = "address";
 	private static String PORT_KEY = "port";
+	private static String VERSION_KEY = "version";	
 	private static String TIMEOUT_KEY = "timeout";
 	private static String USERNAME_KEY = "username";
 	private static String PASSWORD_KEY = "password";
@@ -68,12 +69,13 @@
 				Preferences gwPref = gatewaysNode.node(name);
 				String address = gwPref.get(ADDRESS_KEY, "");
 				int port = gwPref.getInt(PORT_KEY, 0);
+				int version = gwPref.getInt(VERSION_KEY, 2);
 				int timeout = gwPref.getInt(TIMEOUT_KEY, 0);
 				String username = gwPref.get(USERNAME_KEY, "");
 				String password = gwPref.get(PASSWORD_KEY, "");
 				
 				try {
-					GatewayHttpConfig gateway = new GatewayHttpConfig(name, address, port, timeout, username, password);
+					GatewayHttpConfig gateway = new GatewayHttpConfig(name, address, port, timeout, username, password, version);
 					gateways.add(gateway);
 				} catch (IllegalArgumentException e) {
 					// ignore
@@ -121,6 +123,7 @@
 		curGatewayNode.put(ADDRESS_KEY, gateway.getURL().getHost());
 		curGatewayNode.putInt(PORT_KEY, gateway.getURL().getPort());
 		curGatewayNode.putInt(TIMEOUT_KEY, gateway.getTimeout());
+		curGatewayNode.putInt(VERSION_KEY, gateway.getVersion());
 		curGatewayNode.put(USERNAME_KEY, gateway.getUsername());
 		curGatewayNode.put(PASSWORD_KEY, gateway.getPassword());	
 		
diff --git a/services/org.eclipse.sensinact.studio.preferences/src/org/eclipse/sensinact/studio/preferences/GatewayHttpConfig.java b/services/org.eclipse.sensinact.studio.preferences/src/org/eclipse/sensinact/studio/preferences/GatewayHttpConfig.java
index 1d02cbd..f01370c 100644
--- a/services/org.eclipse.sensinact.studio.preferences/src/org/eclipse/sensinact/studio/preferences/GatewayHttpConfig.java
+++ b/services/org.eclipse.sensinact.studio.preferences/src/org/eclipse/sensinact/studio/preferences/GatewayHttpConfig.java
@@ -21,13 +21,14 @@
 public class GatewayHttpConfig {
 
 	private final String name;
+	private final int version;
 	private final URL gatewayURL;
 	private final int timeout;
 	private final String username;
 	private final String password;
 	
-	public GatewayHttpConfig(String name, String address, int port, int timeout, String username, String password) {
-		this(name, generateGatewayURL(address, port), timeout, username, password);		
+	public GatewayHttpConfig(String name, String address, int port, int timeout, String username, String password, int version) {
+		this(name, generateGatewayURL(address, port), timeout, username, password, version);		
 	}
 	
 	private static URL generateGatewayURL(String address, int port) {
@@ -47,11 +48,11 @@
 		}
 	}
 
-	public GatewayHttpConfig(String name, URL gatewayURL, int timeout, String username, String password) {	
+	public GatewayHttpConfig(String name, URL gatewayURL, int timeout, String username, String password, int version) {	
+		this.version = version;
 		if (name == null || name.isEmpty())
 			throw new IllegalArgumentException("name can't be null or empty");
 		this.name = name;
-		
 		if (gatewayURL == null)
 			throw new IllegalArgumentException("gatewayURL can't be null");
 		this.gatewayURL = gatewayURL ;
@@ -80,10 +81,21 @@
 		URL url = getURL();
 		String host = url.getHost();
 		int port = url.getPort();
-		String wsuri = String.format("ws://%s:%d/ws", host, port);
+		String wsuri = null;
+		if(version == 2)
+			wsuri = String.format("ws://%s:%d/ws/sensinact", host, port);
+		else 
+			wsuri = String.format("ws://%s:%d/ws", host, port);
+		System.out.println("------------------------------------");
+		System.out.println(wsuri);
+		System.out.println("------------------------------------");
 		return new URI(wsuri);
 	}
-		
+
+	public int getVersion() {
+		return version;
+	}
+	
 	public int getTimeout() {
 		return timeout;
 	}
