Index: src/main/java/geniusweb/partiesserver/Constants.java
===================================================================
--- src/main/java/geniusweb/partiesserver/Constants.java	(revision 41)
+++ src/main/java/geniusweb/partiesserver/Constants.java	(revision 41)
@@ -0,0 +1,62 @@
+package geniusweb.partiesserver;
+
+import java.lang.management.ManagementFactory;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.Set;
+
+import javax.management.MBeanServer;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import javax.management.Query;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+/**
+ * A central class containing the constants/configuration of the server.
+ * 
+ * <b> This class should is private to the server and should not be used by
+ * others. However servers that derive from this server can completely override
+ * this class to change the constants/configuration</b>
+ */
+public class Constants {
+	private static transient ObjectMapper jackson; // cache
+	private static transient String hostport = ""; // cache
+
+	/**
+	 * 
+	 * @return the object mapper, so that we can extend the objectmapper (with
+	 *         custom classes) centrally. Also allows us to cache the objectmapper
+	 */
+	public static ObjectMapper getJackson() {
+		if (jackson == null) {
+			jackson = new ObjectMapper();
+		}
+		return jackson;
+	}
+
+	/**
+	 * 
+	 * @return a string like "127.0.1.1:8080" containing the server address on which
+	 *         this service is running.
+	 * @throws UnknownHostException         if we can not get the host ip
+	 * @throws MalformedObjectNameException if we can not get the host ip
+	 */
+	public static String getIpAddressAndPort() throws UnknownHostException, MalformedObjectNameException {
+		synchronized (hostport) {
+			if (hostport.isEmpty()) {
+				MBeanServer beanServer = ManagementFactory.getPlatformMBeanServer();
+
+				Set<ObjectName> objectNames = beanServer.queryNames(new ObjectName("*:type=Connector,*"),
+						Query.match(Query.attr("protocol"), Query.value("HTTP/1.1")));
+
+				String host = InetAddress.getLocalHost().getHostAddress();
+				String port = objectNames.iterator().next().getKeyProperty("port");
+
+				hostport = host + ":" + port;
+			}
+			return hostport;
+		}
+
+	}
+}
Index: src/main/java/geniusweb/partiesserver/Info.java
===================================================================
--- src/main/java/geniusweb/partiesserver/Info.java	(revision 40)
+++ src/main/java/geniusweb/partiesserver/Info.java	(revision 41)
@@ -35,5 +35,5 @@
 	protected void doGet(HttpServletRequest request,
 			HttpServletResponse response) throws ServletException, IOException {
-		response.getWriter().append(Jackson.instance().writeValueAsString(
+		response.getWriter().append(Constants.getJackson().writeValueAsString(
 				new ServerInfo(repo.availableSlots(), repo.maximumSlots())));
 	}
Index: src/main/java/geniusweb/partiesserver/Jackson.java
===================================================================
--- src/main/java/geniusweb/partiesserver/Jackson.java	(revision 40)
+++ 	(revision )
@@ -1,22 +1,0 @@
-package geniusweb.partiesserver;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-/**
- * A central generator for the object mapper, so that we can extend the
- * objectmapper (with custom classes) centrally. Also allows us to cache the
- * objectmapper.
- * 
- * <b> This class should is private to the profiles server and should not be
- * used by others.</b>
- */
-public class Jackson {
-	private static ObjectMapper jackson;
-
-	public static ObjectMapper instance() {
-		if (jackson == null) {
-			jackson = new ObjectMapper();
-		}
-		return jackson;
-	}
-}
Index: src/main/java/geniusweb/partiesserver/websocket/PartiesListSocket.java
===================================================================
--- src/main/java/geniusweb/partiesserver/websocket/PartiesListSocket.java	(revision 40)
+++ src/main/java/geniusweb/partiesserver/websocket/PartiesListSocket.java	(revision 41)
@@ -2,6 +2,4 @@
 
 import java.io.IOException;
-import java.lang.management.ManagementFactory;
-import java.net.InetAddress;
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -9,11 +7,7 @@
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Set;
 import java.util.logging.Level;
 
-import javax.management.MBeanServer;
 import javax.management.MalformedObjectNameException;
-import javax.management.ObjectName;
-import javax.management.Query;
 import javax.websocket.OnClose;
 import javax.websocket.OnError;
@@ -22,5 +16,5 @@
 import javax.websocket.server.ServerEndpoint;
 
-import geniusweb.partiesserver.Jackson;
+import geniusweb.partiesserver.Constants;
 import geniusweb.partiesserver.repository.AvailablePartiesRepo;
 import geniusweb.partiesserver.repository.AvailableParty;
@@ -45,5 +39,4 @@
 	private AvailablePartiesRepo repo;
 	private SendBuffer outstream;
-	private static transient String hostport = ""; // cache
 
 	public PartiesListSocket() {
@@ -83,5 +76,5 @@
 		String ip = DEFAULT_ADDRESS; // default if something fails
 		try {
-			ip = getIpAddressAndPort() + "/" + getServerName();
+			ip = Constants.getIpAddressAndPort() + "/" + getServerName();
 		} catch (MalformedObjectNameException | UnknownHostException e1) {
 			log.log(Level.SEVERE,
@@ -97,5 +90,5 @@
 						party.getDescription()));
 			}
-			String text = Jackson.instance().writeValueAsString(list);
+			String text = Constants.getJackson().writeValueAsString(list);
 			outstream.send(text);
 		} catch (IOException | URISyntaxException e) {
@@ -140,26 +133,5 @@
 	}
 
-	private String getIpAddressAndPort()
-			throws UnknownHostException, MalformedObjectNameException {
-		synchronized (hostport) {
-			if (hostport.isEmpty()) {
-				MBeanServer beanServer = ManagementFactory
-						.getPlatformMBeanServer();
 
-				Set<ObjectName> objectNames = beanServer.queryNames(
-						new ObjectName("*:type=Connector,*"),
-						Query.match(Query.attr("protocol"),
-								Query.value("HTTP/1.1")));
-
-				String host = InetAddress.getLocalHost().getHostAddress();
-				String port = objectNames.iterator().next()
-						.getKeyProperty("port");
-
-				hostport = host + ":" + port;
-			}
-			return hostport;
-		}
-
-	}
 
 }
Index: src/main/java/geniusweb/partiesserver/websocket/PartySocket.java
===================================================================
--- src/main/java/geniusweb/partiesserver/websocket/PartySocket.java	(revision 40)
+++ src/main/java/geniusweb/partiesserver/websocket/PartySocket.java	(revision 41)
@@ -24,5 +24,5 @@
 import geniusweb.inform.Inform;
 import geniusweb.inform.Settings;
-import geniusweb.partiesserver.Jackson;
+import geniusweb.partiesserver.Constants;
 import geniusweb.partiesserver.repository.RunningPartiesRepo;
 import geniusweb.partiesserver.repository.RunningParty;
@@ -146,5 +146,5 @@
 		// if we get here, full message is now in
 
-		Inform info = Jackson.instance().readValue(informmessage, Inform.class);
+		Inform info = Constants.getJackson().readValue(informmessage, Inform.class);
 		RunningParty party = runningparties.get(partyID);
 		if (party != null) {
@@ -247,5 +247,5 @@
 		}
 		log.log(Level.FINE, "Action " + partyID + ": " + action);
-		outstream.send(Jackson.instance().writeValueAsString(action));
+		outstream.send(Constants.getJackson().writeValueAsString(action));
 	}
 
Index: src/main/java/geniusweb/partiesserver/websocket/RunningListSocket.java
===================================================================
--- src/main/java/geniusweb/partiesserver/websocket/RunningListSocket.java	(revision 40)
+++ src/main/java/geniusweb/partiesserver/websocket/RunningListSocket.java	(revision 41)
@@ -14,5 +14,5 @@
 
 import geniusweb.actions.PartyId;
-import geniusweb.partiesserver.Jackson;
+import geniusweb.partiesserver.Constants;
 import geniusweb.partiesserver.repository.RunningPartiesRepo;
 import geniusweb.partiesserver.repository.RunningPartyInfo;
@@ -70,5 +70,5 @@
 		log.log(Level.FINE, "sending updated running parties list " + list);
 		try {
-			outstream.send(Jackson.instance().writeValueAsString(repo.list()));
+			outstream.send(Constants.getJackson().writeValueAsString(repo.list()));
 		} catch (IOException e) {
 			log.log(Level.SEVERE, "Internal problem converting json", e);
Index: src/test/java/geniusweb/partiesserver/AvailablePartiesUpdaterTest.java
===================================================================
--- src/test/java/geniusweb/partiesserver/AvailablePartiesUpdaterTest.java	(revision 40)
+++ src/test/java/geniusweb/partiesserver/AvailablePartiesUpdaterTest.java	(revision 41)
@@ -31,5 +31,5 @@
 
 public class AvailablePartiesUpdaterTest {
-	private static final String RANDOMPARTY = "src/main/webapp/partiesrepo/randomparty-2.1.0.jar";
+	private static final String RANDOMPARTY = "src/main/webapp/partiesrepo/randomparty-2.1.1.jar";
 	private static final int TESTRATE = 200; // check file changes every 200ms
 	@SuppressWarnings("unchecked")
Index: src/test/java/geniusweb/partiesserver/JavaClientTest.java
===================================================================
--- src/test/java/geniusweb/partiesserver/JavaClientTest.java	(revision 40)
+++ src/test/java/geniusweb/partiesserver/JavaClientTest.java	(revision 41)
@@ -39,5 +39,5 @@
  */
 public class JavaClientTest {
-	private static final String RANDOMPARTY = "http://localhost:8080/partiesserver/run/randomparty-2.1.0";
+	private static final String RANDOMPARTY = "http://localhost:8080/partiesserver/run/randomparty-2.1.1";
 	private EmbeddedTomcat tomcat = new EmbeddedTomcat();
 	private JavaClient client = new JavaClient();
