diff --git a/SallyServlet/src/main/java/info/kwarc/sally4/servlet/ServletEndpointProvider.java b/SallyServlet/src/main/java/info/kwarc/sally4/servlet/ServletEndpointProvider.java
deleted file mode 100644
index c3045e904add4dd138062cbc84c6d5b6dd795f57..0000000000000000000000000000000000000000
--- a/SallyServlet/src/main/java/info/kwarc/sally4/servlet/ServletEndpointProvider.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package info.kwarc.sally4.servlet;
-
-public interface ServletEndpointProvider {
-	String getServletEndpoint(String localPath);
-}
diff --git a/SallyServlet/.classpath b/activemq/.classpath
similarity index 100%
rename from SallyServlet/.classpath
rename to activemq/.classpath
diff --git a/activemq/.project b/activemq/.project
new file mode 100644
index 0000000000000000000000000000000000000000..7476958257dbfa9bd5d238e9b7ad2ced18aa88bd
--- /dev/null
+++ b/activemq/.project
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>activemq</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+	</natures>
+</projectDescription>
diff --git a/SallyServlet/.settings/org.eclipse.jdt.core.prefs b/activemq/.settings/org.eclipse.jdt.core.prefs
similarity index 100%
rename from SallyServlet/.settings/org.eclipse.jdt.core.prefs
rename to activemq/.settings/org.eclipse.jdt.core.prefs
diff --git a/SallyServlet/.settings/org.eclipse.m2e.core.prefs b/activemq/.settings/org.eclipse.m2e.core.prefs
similarity index 100%
rename from SallyServlet/.settings/org.eclipse.m2e.core.prefs
rename to activemq/.settings/org.eclipse.m2e.core.prefs
diff --git a/activemq/pom.xml b/activemq/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e5469e611d0fe42445824b2866aa83a5880fd21e
--- /dev/null
+++ b/activemq/pom.xml
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+	<!-- Licensed to the Apache Software Foundation (ASF) under one or more 
+		contributor license agreements. See the NOTICE file distributed with this 
+		work for additional information regarding copyright ownership. The ASF licenses 
+		this file to You under the Apache License, Version 2.0 (the "License"); you 
+		may not use this file except in compliance with the License. You may obtain 
+		a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless 
+		required by applicable law or agreed to in writing, software distributed 
+		under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 
+		OR CONDITIONS OF ANY KIND, either express or implied. See the License for 
+		the specific language governing permissions and limitations under the License. -->
+
+	<modelVersion>4.0.0</modelVersion>
+
+	<packaging>bundle</packaging>
+
+	<groupId>info.kwarc.sally4</groupId>
+	<artifactId>activemq</artifactId>
+	<version>0.0.1-SNAPSHOT</version>
+
+
+	<properties>
+		<maven-bundle-plugin.version>2.4.0</maven-bundle-plugin.version>
+		<osgi.version>5.0.0</osgi.version>
+		<camel.version>2.12.3</camel.version>
+	</properties>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.osgi</groupId>
+			<artifactId>org.osgi.core</artifactId>
+			<version>${osgi.version}</version>
+			<scope>provided</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.osgi</groupId>
+			<artifactId>org.osgi.compendium</artifactId>
+			<version>${osgi.version}</version>
+			<scope>provided</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.camel</groupId>
+			<artifactId>camel-servlet</artifactId>
+			<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>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.felix</groupId>
+			<artifactId>org.apache.felix.ipojo.annotations</artifactId>
+			<version>1.11.2</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>slf4j-api</artifactId>
+			<version>1.7.7</version>
+		</dependency>
+
+		<dependency>
+			<groupId>info.kwarc.sally4</groupId>
+			<artifactId>core</artifactId>
+			<version>0.0.1-SNAPSHOT</version>
+		</dependency>
+
+	</dependencies>
+
+	<build>
+		<plugins>
+			<!-- BND Maven Plugin Configuration -->
+			<plugin>
+				<groupId>org.apache.felix</groupId>
+				<artifactId>maven-bundle-plugin</artifactId>
+				<extensions>true</extensions>
+				<configuration>
+					<instructions>
+						<Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+						<Private-Package>info.kwarc.sally4.activemq.impl</Private-Package>
+						<Import-Package>*;</Import-Package>
+						<Export-Package>info.kwarc.sally4.activemq*</Export-Package>
+					</instructions>
+				</configuration>
+			</plugin>
+			<!-- iPOJO Maven Plugin Configuration : nothing to do -->
+			<plugin>
+				<groupId>org.apache.felix</groupId>
+				<artifactId>maven-ipojo-plugin</artifactId>
+				<version>1.6.0</version>
+				<executions>
+					<execution>
+						<goals>
+							<goal>ipojo-bundle</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/activemq/src/main/java/info/kwarc/sally4/activemq/ActiveMQService.java b/activemq/src/main/java/info/kwarc/sally4/activemq/ActiveMQService.java
new file mode 100644
index 0000000000000000000000000000000000000000..6eac9b5a3a700381357d9655755dabb43add0fa9
--- /dev/null
+++ b/activemq/src/main/java/info/kwarc/sally4/activemq/ActiveMQService.java
@@ -0,0 +1,5 @@
+package info.kwarc.sally4.activemq;
+
+
+public interface ActiveMQService {
+}
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
new file mode 100644
index 0000000000000000000000000000000000000000..125f6b418b8615a013ee7e9d2b0bd02c8110cb40
--- /dev/null
+++ b/activemq/src/main/java/info/kwarc/sally4/activemq/impl/ActiveMQServiceImpl.java
@@ -0,0 +1,54 @@
+package info.kwarc.sally4.activemq.impl;
+
+import info.kwarc.sally4.activemq.ActiveMQService;
+import info.kwarc.sally4.core.CamelContextProvider;
+
+import org.apache.activemq.ActiveMQConnectionFactory;
+import org.apache.activemq.camel.component.ActiveMQComponent;
+import org.apache.activemq.camel.component.ActiveMQConfiguration;
+import org.apache.felix.ipojo.annotations.Component;
+import org.apache.felix.ipojo.annotations.Instantiate;
+import org.apache.felix.ipojo.annotations.Invalidate;
+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;
+
+@Component
+@Provides
+@Instantiate
+public class ActiveMQServiceImpl implements ActiveMQService {
+
+	@Requires
+	CamelContextProvider camelContextProvider;
+
+	@Requires
+	BundleContext bundleContext;
+	
+	boolean ownConnection = false;
+	
+	@Validate
+	public void start()  {
+		if (camelContextProvider.getComponent("activemq") == null)
+			return;
+		ownConnection = true;
+		ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
+		connectionFactory.setUserName("webclient");
+		connectionFactory.setPassword("webclient");
+		
+		ActiveMQConfiguration config = new ActiveMQConfiguration();
+		config.setConnectionFactory(connectionFactory);
+
+		ActiveMQComponent comp = new ActiveMQComponent(config);
+		camelContextProvider.registerGlobalComponent("activemq", comp);
+	}
+
+	@Invalidate
+	public void stop() {
+		if (ownConnection) {
+			camelContextProvider.unregisterGlobalComponent("activemq");
+			ownConnection = false;
+		}
+	}
+
+}
diff --git a/build.sh b/build.sh
new file mode 100755
index 0000000000000000000000000000000000000000..e1f9fcb81d002a77034ac110a545185a4fa799be
--- /dev/null
+++ b/build.sh
@@ -0,0 +1 @@
+mvn clean package install -DskipTests
\ No newline at end of file
diff --git a/docmanager/src/main/java/info/kwarc/sally4/docmanager/AlexRoute.java b/docmanager/src/main/java/info/kwarc/sally4/docmanager/AlexRoute.java
new file mode 100644
index 0000000000000000000000000000000000000000..d4fae0fff1fe49cfe3f6adc6dd0a735f9ca2c194
--- /dev/null
+++ b/docmanager/src/main/java/info/kwarc/sally4/docmanager/AlexRoute.java
@@ -0,0 +1,5 @@
+package info.kwarc.sally4.docmanager;
+
+
+public interface AlexRoute {
+}
diff --git a/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/AlexRouteImpl.java b/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/AlexRouteImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..f67a22c03db4cb8de26aa97b802ce781bfd3d54e
--- /dev/null
+++ b/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/AlexRouteImpl.java
@@ -0,0 +1,34 @@
+package info.kwarc.sally4.docmanager.impl;
+
+import info.kwarc.sally4.docmanager.AlexRoute;
+
+import java.util.Collection;
+import java.util.HashSet;
+
+
+public class AlexRouteImpl implements AlexRoute {
+
+	String alexQueue;
+	String theoQueue;
+	HashSet<String> interfaces;
+
+	String alexStateRoute;
+
+	
+	String generateUUID(String doc_queue) {
+		//"/queue/sally_doc_"+UUID.randomUUID().toString()
+		return "sally_doc_"+doc_queue;
+	}
+	
+	public AlexRouteImpl(String alexQueue, String theoQueue, Collection<String> interfaces) {
+		this.alexQueue = alexQueue;
+		this.theoQueue = theoQueue;
+		this.interfaces = new HashSet<String>(this.interfaces);
+		this.alexStateRoute = generateUUID(alexQueue);
+	}	
+	
+	public String getAlexStateRoute() {
+		return alexStateRoute;
+	}
+	
+}
diff --git a/docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/DocumentManagerRoutes.java b/docmanager/src/main/java/info/kwarc/sally4/docmanager/routes/SallyRegisterRoute.java
similarity index 100%
rename from docmanager/src/main/java/info/kwarc/sally4/docmanager/impl/DocumentManagerRoutes.java
rename to docmanager/src/main/java/info/kwarc/sally4/docmanager/routes/SallyRegisterRoute.java
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2d3bea219650376ca8536ceb864b5aab2697f42a
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,33 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+                             http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<groupId>info.kwarc.sally</groupId>
+	<artifactId>sally</artifactId>
+	<packaging>pom</packaging>
+	<version>1.0</version>
+	<name>Sally Project</name>
+
+	<modules>
+		<module>core</module>
+		<module>docmanager</module>
+		<module>planetary</module>
+		<module>servlet</module>
+	</modules>
+
+	<build>
+		<pluginManagement>
+			<plugins>
+				<plugin>
+					<groupId>org.apache.maven.plugins</groupId>
+					<artifactId>maven-compiler-plugin</artifactId>
+					<configuration>
+						<source>1.7</source>
+						<target>1.7</target>
+					</configuration>
+				</plugin>
+			</plugins>
+		</pluginManagement>
+	</build>
+</project>
\ No newline at end of file
diff --git a/servlet/.classpath b/servlet/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..395dbde027f67aca1db4bd4d077783059afb3acd
--- /dev/null
+++ b/servlet/.classpath
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry including="**/*.java" kind="src" path="src/main/resources"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/SallyServlet/.project b/servlet/.project
similarity index 100%
rename from SallyServlet/.project
rename to servlet/.project
diff --git a/servlet/.settings/org.eclipse.jdt.core.prefs b/servlet/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..abec6ca389ac6331e1f6466d9f67c8dd3406fb5a
--- /dev/null
+++ b/servlet/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/servlet/.settings/org.eclipse.m2e.core.prefs b/servlet/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..f897a7f1cb2389f85fe6381425d29f0a9866fb65
--- /dev/null
+++ b/servlet/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/SallyServlet/pom.xml b/servlet/pom.xml
similarity index 100%
rename from SallyServlet/pom.xml
rename to servlet/pom.xml
diff --git a/SallyServlet/src/main/java/info/kwarc/sally4/servlet/SallyServlet.java b/servlet/src/main/java/info/kwarc/sally4/servlet/SallyServlet.java
similarity index 100%
rename from SallyServlet/src/main/java/info/kwarc/sally4/servlet/SallyServlet.java
rename to servlet/src/main/java/info/kwarc/sally4/servlet/SallyServlet.java
diff --git a/SallyServlet/src/main/java/info/kwarc/sally4/servlet/impl/ServletImpl.java b/servlet/src/main/java/info/kwarc/sally4/servlet/impl/ServletImpl.java
similarity index 100%
rename from SallyServlet/src/main/java/info/kwarc/sally4/servlet/impl/ServletImpl.java
rename to servlet/src/main/java/info/kwarc/sally4/servlet/impl/ServletImpl.java