diff --git a/Felix/bundle-dev/servlet-0.0.1-SNAPSHOT.jar b/Felix/bundle-dev/servlet-0.0.1-SNAPSHOT.jar
index 5f22df2b5935d2e4f34235b18775a31822383742..48e0125fe98c46dc771ed290cf82d86e42730a6c 120000
--- a/Felix/bundle-dev/servlet-0.0.1-SNAPSHOT.jar
+++ b/Felix/bundle-dev/servlet-0.0.1-SNAPSHOT.jar
@@ -1 +1 @@
-/home/costea/workspace_sally4/SallyServlet/target/servlet-0.0.1-SNAPSHOT.jar
\ No newline at end of file
+/home/costea/workspace_sally4/servlet/target/servlet-0.0.1-SNAPSHOT.jar
\ No newline at end of file
diff --git a/Felix/bundle/javax.servlet-api-3.1.0.jar b/Felix/bundle/javax.servlet-api-3.1.0.jar
deleted file mode 100644
index 6b14c3d267867e76c04948bb31b3de18e01412ee..0000000000000000000000000000000000000000
Binary files a/Felix/bundle/javax.servlet-api-3.1.0.jar and /dev/null differ
diff --git a/Felix/conf/config.properties b/Felix/conf/config.properties
index c1f0de0aaed42ba6ed73b8a252bf60ceb327c6a7..12f3e8eb0f873a158be0cda2bb92f3ef47caea06 100644
--- a/Felix/conf/config.properties
+++ b/Felix/conf/config.properties
@@ -96,7 +96,7 @@ felix.log.level=1
 # Bundle config properties.
 #
 
-org.osgi.service.http.port=8080
+org.osgi.service.http.port=8181
 obr.repository.url=http://felix.apache.org/obr/releases.xml
 
 
diff --git a/Felix/start.sh b/Felix/start.sh
index 7522e929512b6b078a8194f2e280a72889237efe..0c1eb7cf3f78184dade77b1cee584866f4968879 100755
--- a/Felix/start.sh
+++ b/Felix/start.sh
@@ -1,2 +1,3 @@
+cd /home/costea/workspace_sally4/Felix;
 rm -rf felix-cache
-java -Dorg.osgi.framework.bootdelegation=sun.misc -jar bin/felix.jar
+java -Dorg.osgi.framework.bootdelegation=* -jar bin/felix.jar
diff --git a/MathHubWorker/pom.xml b/MathHubWorker/pom.xml
index 5581e8d3510fc86816918f3b25f928ed8137921c..a47747d55b3a951a9f45b0c94a98c6f1571c2001 100644
--- a/MathHubWorker/pom.xml
+++ b/MathHubWorker/pom.xml
@@ -45,7 +45,7 @@
 		<dependency>
 			<groupId>info.kwarc.sally4</groupId>
 			<artifactId>core</artifactId>
-			<version>0.0.1-SNAPSHOT</version>
+			<version>0.0.2-SNAPSHOT</version>
 		</dependency>
 
 		<dependency>
@@ -53,7 +53,13 @@
 			<artifactId>planetary</artifactId>
 			<version>0.0.1-SNAPSHOT</version>
 		</dependency>
-
+		
+		
+		<dependency>
+			<groupId>info.kwarc.sally4</groupId>
+			<artifactId>docmanager</artifactId>
+			<version>0.0.1-SNAPSHOT</version>
+		</dependency>
 
 	</dependencies>
 
@@ -66,7 +72,7 @@
 				<extensions>true</extensions>
 				<configuration>
 					<instructions>
-						<Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+						<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
 						<Private-Package>info.kwarc.sally4.mathhubworker.impl*</Private-Package>
 						<Export-Package>info.kwarc.sally4.mathhubworker*</Export-Package>
 					</instructions>
diff --git a/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/MathHubWorkerImpl.java b/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/MathHubWorkerImpl.java
index 4818fb43ef603a7eda4638ddbb16733ce54d02dd..623721453cdad18361cfacd4fdcd0b206722b212 100644
--- a/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/MathHubWorkerImpl.java
+++ b/MathHubWorker/src/main/java/info/kwarc/sally4/mathhubworker/impl/MathHubWorkerImpl.java
@@ -1,12 +1,19 @@
 package info.kwarc.sally4.mathhubworker.impl;
 
 import info.kwarc.sally4.core.CamelContextProvider;
+import info.kwarc.sally4.docmanager.AlexRoute;
+import info.kwarc.sally4.docmanager.IDocWorkflow;
+import info.kwarc.sally4.docmanager.component.AlexComponent;
 import info.kwarc.sally4.mathhubworker.MathHubWorker;
+import info.kwarc.sally4.mathhubworker.routes.MathHubRoute;
 import info.kwarc.sally4.planetary.PlanetaryConnection;
 
+import java.util.HashMap;
+import java.util.Map;
+
 import org.apache.camel.CamelContext;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.Exchange;
+import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.felix.ipojo.annotations.Component;
 import org.apache.felix.ipojo.annotations.Instantiate;
 import org.apache.felix.ipojo.annotations.Invalidate;
@@ -19,7 +26,7 @@ import org.slf4j.LoggerFactory;
 @Component
 @Instantiate
 @Provides
-public class MathHubWorkerImpl implements MathHubWorker {
+public class MathHubWorkerImpl implements MathHubWorker, IDocWorkflow {
 
 	@Requires
 	CamelContextProvider camelContextProvider;
@@ -27,49 +34,66 @@ public class MathHubWorkerImpl implements MathHubWorker {
 	@Requires
 	PlanetaryConnection conn;
 	
-	CamelContext camelContext;
+	Map<AlexRoute, CamelContext> routeContexts;
 	
 	Logger log;
 	
 	
 	public MathHubWorkerImpl() {
 		log = LoggerFactory.getLogger(getClass());
+		routeContexts = new HashMap<AlexRoute, CamelContext>();
+	}
+	
+	@Validate
+	public void start() {		
 	}
 	
-	static class MyRoute extends RouteBuilder{
+	@Invalidate
+	public void stop() {
+	
+	}
 
-		@Override
-		public void configure() throws Exception {
-			from("direct:getUserForSessionID")
-				.id("getUserFromPlanetary")
-				.to("planetary:select uid from sessions where sid=#?outputType=SelectOne");
+	public void onNewDocument(final AlexRoute route) {
+		CamelContext camelContext = new DefaultCamelContext();
+		routeContexts.put(route, camelContext);
+		
+		route.addOnStopHandler(new Runnable() {
 			
-			from("activemq:")
-		}
+			public void run() {
+				try {
+					routeContexts.get(route).stop();
+				} catch (Exception e) {
+					e.printStackTrace();
+				} finally {
+					routeContexts.remove(route);
+				}
+			}
+		});
+		
+		camelContext.addComponent("planetary", camelContextProvider.getComponent("planetary"));
+		camelContext.addComponent("alex", new AlexComponent(route));
 		
-	}
-	
-	@Validate
-	public void start() {
-		camelContext = camelContextProvider.getSallyCamelContext();
 		try {
-			camelContext.addRoutes(new MyRoute());
+			camelContext.start();
+			camelContext.addRoutes(new MathHubRoute());
+			camelContext.createProducerTemplate().sendBody("direct:start", route);
 		} catch (Exception e) {
 			log.error(e.getMessage());
 			e.printStackTrace();
 		}
+	}
 
-		ProducerTemplate temp = camelContext.createProducerTemplate();
-		temp.sendBody("direct:getUserForSessionID", "VgCb5cQwrAhj1XG4rSxU0ygW6ZkYFYGovg_pCgWem4g");
+	public String[] getInterfaceRequirements() {
+		return new String[]{"planetaryclient"};
 	}
-	
-	@Invalidate
-	public void stop() {
-		try {
-			camelContext.removeRoute("getUserFromPlanetary");
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
+
+	public String[] getHandlingNamespaces() {
+		return new String[] {"http://kwarc.info/sally/comm/planetaryclient"};
+	}
+
+	public boolean handleMessage(String namespace, String type, Exchange body) {
+		
+		return false;
 	}
 	
 }
diff --git a/activemq/pom.xml b/activemq/pom.xml
index e5469e611d0fe42445824b2866aa83a5880fd21e..e37cf54d20d462b72852f2f23bd9a2d6c2ca0a73 100644
--- a/activemq/pom.xml
+++ b/activemq/pom.xml
@@ -49,17 +49,10 @@
 			<version>${camel.version}</version>
 		</dependency>
 
-		<dependency>
-			<groupId>javax.servlet</groupId>
-			<artifactId>servlet-api</artifactId>
-			<version>2.5</version>
-			<scope>compile</scope>
-		</dependency>
-
 		<dependency>
 			<groupId>org.apache.activemq</groupId>
 			<artifactId>activemq-camel</artifactId>
-			<version>5.9.1</version>
+			<version>5.9.0</version>
 		</dependency>
 
 		<dependency>
@@ -91,7 +84,7 @@
 				<extensions>true</extensions>
 				<configuration>
 					<instructions>
-						<Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+						<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
 						<Private-Package>info.kwarc.sally4.activemq.impl</Private-Package>
 						<Import-Package>*;</Import-Package>
 						<Export-Package>info.kwarc.sally4.activemq*</Export-Package>
diff --git a/activemq/src/main/java/info/kwarc/sally4/activemq/impl/ActiveMQServiceImpl.java b/activemq/src/main/java/info/kwarc/sally4/activemq/impl/ActiveMQServiceImpl.java
index 125f6b418b8615a013ee7e9d2b0bd02c8110cb40..97f8f2ed563347237b776a2f6d232a74a915a4e0 100644
--- a/activemq/src/main/java/info/kwarc/sally4/activemq/impl/ActiveMQServiceImpl.java
+++ b/activemq/src/main/java/info/kwarc/sally4/activemq/impl/ActiveMQServiceImpl.java
@@ -13,6 +13,8 @@ import org.apache.felix.ipojo.annotations.Provides;
 import org.apache.felix.ipojo.annotations.Requires;
 import org.apache.felix.ipojo.annotations.Validate;
 import org.osgi.framework.BundleContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 @Component
 @Provides
@@ -21,16 +23,22 @@ public class ActiveMQServiceImpl implements ActiveMQService {
 
 	@Requires
 	CamelContextProvider camelContextProvider;
-
-	@Requires
-	BundleContext bundleContext;
+	
+	Logger log;
+	
+	public ActiveMQServiceImpl(BundleContext bundleContext) {
+		log = LoggerFactory.getLogger(getClass());
+	}
 	
 	boolean ownConnection = false;
 	
 	@Validate
 	public void start()  {
-		if (camelContextProvider.getComponent("activemq") == null)
+		log.info(camelContextProvider.getName());
+		if (camelContextProvider.getComponent("activemq") != null) {
 			return;
+		}
+		log.info("connecting to a new ActiveMQ");
 		ownConnection = true;
 		ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
 		connectionFactory.setUserName("webclient");
diff --git a/core/pom.xml b/core/pom.xml
index 83ae759e50b693346c8a64fd51abb7722503010d..b230ffea742c93b3975f7eb1e784ab239e4a8024 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -3,7 +3,7 @@
 	<packaging>bundle</packaging>
 	<groupId>info.kwarc.sally4</groupId>
 	<artifactId>core</artifactId>
-	<version>0.0.1-SNAPSHOT</version>
+	<version>0.0.2-SNAPSHOT</version>
 	<name>Sally4 Core</name>
 
 	<properties>
@@ -51,7 +51,7 @@
 				<configuration>
 					<instructions>
 						<Bundle-Activator>info.kwarc.sally4.core.impl.Activator</Bundle-Activator>
-						<Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+						<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
 						<Private-Package>info.kwarc.sally4.core.impl</Private-Package>
 						<Export-Package>info.kwarc.sally4.core*;info.kwarc.sally.comm*</Export-Package>
 						<Import-Package>*;</Import-Package>
diff --git a/core/src/main/java/info/kwarc/sally/comm/CommUtils.java b/core/src/main/java/info/kwarc/sally/comm/CommUtils.java
index 8a69b3eed6403bcfa89c7f5a949ccf6991019a27..f8f7ebfa1825f0797ed0ec83ac946dd956fc57c1 100644
--- a/core/src/main/java/info/kwarc/sally/comm/CommUtils.java
+++ b/core/src/main/java/info/kwarc/sally/comm/CommUtils.java
@@ -16,4 +16,16 @@ public class CommUtils {
 		}
 		
 	}
+
+
+	public static DataFormat getDataFormat(String iFace, ClassLoader loader) {
+		try {
+			JAXBContext context = JAXBContext.newInstance("info.kwarc.sally.comm."+iFace, loader);
+			return new JaxbDataFormat(context);
+		} catch (JAXBException e) {
+			return null;
+		}
+		
+	}
+
 }
diff --git a/mmt/pom.xml b/mmt/pom.xml
index 3d38fe79d8fa969bc2826a67c8c9c6e3791f0d3e..adddee541687acc27a446bccd0e3ed07e3e302ee 100644
--- a/mmt/pom.xml
+++ b/mmt/pom.xml
@@ -102,7 +102,7 @@
 				<extensions>true</extensions>
 				<configuration>
 					<instructions>
-						<Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+						<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
 						<Private-Package>info.kwarc.sally4.mmt.impl</Private-Package>
 						<Import-Package>*;</Import-Package>
 						<Export-Package>info.kwarc.sally4.mmt*</Export-Package>
diff --git a/pom.xml b/pom.xml
index 2d3bea219650376ca8536ceb864b5aab2697f42a..a3c61dca91102ed2cb480559b3a0a36bcff8b667 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,6 +14,7 @@
 		<module>docmanager</module>
 		<module>planetary</module>
 		<module>servlet</module>
+		<module>MathHubWorker</module>
 	</modules>
 
 	<build>
diff --git a/servlet/.project b/servlet/.project
index da0815d7e5fa2578995b5b1acc0b291f48411ae1..d861ace9e9541e7ac32ffbec2b1ef6a4856c970d 100644
--- a/servlet/.project
+++ b/servlet/.project
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-	<name>SallyServlet</name>
+	<name>servlet</name>
 	<comment></comment>
 	<projects>
 	</projects>
diff --git a/servlet/pom.xml b/servlet/pom.xml
index f316c9b43875676c103e85c807e14537a80b8dcb..4df724d6c7f86086d606c7475d9c1f994aa56cba 100644
--- a/servlet/pom.xml
+++ b/servlet/pom.xml
@@ -86,7 +86,7 @@
 				<extensions>true</extensions>
 				<configuration>
 					<instructions>
-						<Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+						<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
 						<Private-Package>info.kwarc.sally4.servlet.impl</Private-Package>
 						<Import-Package>*;</Import-Package>
 						<Export-Package>info.kwarc.sally4.servlet*</Export-Package>
diff --git a/servlet/src/main/java/info/kwarc/sally4/servlet/impl/ServletImpl.java b/servlet/src/main/java/info/kwarc/sally4/servlet/impl/ServletImpl.java
index b93499cc18b1ea4b0da4c614d41f2d6ec128896e..abfa7876de7bc27556a8741543894da7a3b39c5d 100644
--- a/servlet/src/main/java/info/kwarc/sally4/servlet/impl/ServletImpl.java
+++ b/servlet/src/main/java/info/kwarc/sally4/servlet/impl/ServletImpl.java
@@ -33,13 +33,13 @@ public class ServletImpl implements SallyServlet {
 		httpSevlet.registerServlet("/sally", srvlet, null, null);
 		ServletComponent servletComponent = new ServletComponent();
 		servletComponent.setServletName(srvlet.getServletName());
-		camelContextProvider.getSallyCamelContext().addComponent("sallyservlet", servletComponent);
+		camelContextProvider.registerGlobalComponent("sallyservlet", servletComponent);
 	}
 
 	@Invalidate
 	public void stop() {
 		httpSevlet.unregister("/sally");		
-		camelContextProvider.getSallyCamelContext().removeComponent("sallyservlet");
+		camelContextProvider.unregisterGlobalComponent("sallyservlet");
 	}
 
 }