diff --git a/routerjars/build.gradle b/routerjars/build.gradle
index 225f46b1fab8b9fbf0f8fe58405f82f8d7d1fa80..d27024ebb15a08fd00070f3c5665e5178247cfd5 100644
--- a/routerjars/build.gradle
+++ b/routerjars/build.gradle
@@ -1,33 +1,34 @@
 apply plugin: 'java'
 
-task buildJars(type: Exec) {
-    outputs.dir('libs')
-    commandLine 'ant', 'buildrouter'
-}
-compileJava.dependsOn buildJars
-
 configurations {
     client
 }
 
-dependencies {
-    'default' configurations.client
+configurations.default.extendsFrom configurations.client
+
+task buildClient(type: Exec) {
+    outputs.dir('libs')
+    commandLine 'ant', 'buildclient'
+}
+task buildRouter(type: Exec) {
+    outputs.dir('libs')
+    commandLine 'ant', 'buildrouter'
 }
 
 // TODO an empty routerjars.jar is added to the classpath
 
 artifacts {
-    client file('libs/i2p.jar')
-    client file('libs/mstreaming.jar')
-    client file('libs/streaming.jar')
-
-    'default' file('libs/router.jar')
-    'default' file('libs/i2ptunnel.jar')
-    'default' file('libs/addressbook.jar')
-    'default' file('libs/BOB.jar')
+    client file: file('libs/i2p.jar'), builtBy: buildClient
+    client file: file('libs/mstreaming.jar'), builtBy: buildClient
+    client file: file('libs/streaming.jar'), builtBy: buildClient
+
+    'default' file: file('libs/router.jar'), builtBy: buildRouter
+    'default' file: file('libs/i2ptunnel.jar'), builtBy: buildRouter
+    'default' file: file('libs/addressbook.jar'), builtBy: buildRouter
+    'default' file: file('libs/BOB.jar'), builtBy: buildRouter
 }
 
-clean.dependsOn cleanBuildJars
+clean.dependsOn cleanBuildClient, cleanBuildRouter
 
 clean << {
     exec {
diff --git a/routerjars/build.xml b/routerjars/build.xml
index c6faf534bfe852afef3320c2fe8f81d32615787e..ac84fc63cdd6a33636a7960529275bcca6f0c14b 100644
--- a/routerjars/build.xml
+++ b/routerjars/build.xml
@@ -16,11 +16,17 @@
     </fail>
     <echo message="Using I2P source at ${i2pbase}" />
 
+    <available property="have.streaming" file="${i2pbase}/build/streaming.jar" />
     <available property="have.router" file="${i2pbase}/build/router.jar" />
     <available property="have.bob" file="${i2pbase}/apps/BOB/dist/BOB.jar" />
     <available property="have.i2ptunnel" file="${i2pbase}/apps/i2ptunnel/java/build/i2ptunnel.jar" />
     <available property="have.addressbook" file="${i2pbase}/apps/addressbook/dist/addressbook.jar" />
 
+    <!-- builds core, ministreaming and streaming -->
+    <target name="buildStreaming" unless="have.streaming">
+        <ant dir="${i2pbase}" inheritall="false" useNativeBasedir="true" target="buildStreaming" />
+    </target>
+
     <target name="buildRouter" unless="have.router">
         <ant dir="${i2pbase}" inheritall="false" useNativeBasedir="true" target="buildRouter" />
     </target>
@@ -36,15 +42,9 @@
         <ant dir="${i2pbase}" inheritall="false" useNativeBasedir="true" target="buildBOB" />
     </target>
 
-    <target name="buildrouter" depends="buildRouter, buildI2PTunnelJar, buildAddressbook, buildBOB">
-
-        <!-- router -->
-        <copy file="${i2pbase}/build/router.jar" todir="${jar.libs.dir}" />
+    <target name="buildclient" depends="buildStreaming">
 
-        <!-- bob -->
-        <copy file="${i2pbase}/apps/BOB/dist/BOB.jar" todir="${jar.libs.dir}" />
         <!-- core -->
-
         <!-- lots of unneeded stuff could be deleted here -->
         <jar destfile="${jar.libs.dir}/i2p.jar" >
             <zipfileset src="${i2pbase}/build/i2p.jar" >
@@ -52,9 +52,18 @@
             </zipfileset>
         </jar>
 
-        <!-- i2ptunnel -->
+        <!-- streaming -->
         <copy file="${i2pbase}/apps/ministreaming/java/build/mstreaming.jar" todir="${jar.libs.dir}" />
         <copy file="${i2pbase}/apps/streaming/java/build/streaming.jar" todir="${jar.libs.dir}" />
+
+    </target>
+
+    <target name="buildrouter" depends="buildRouter, buildI2PTunnelJar, buildAddressbook, buildBOB">
+
+        <!-- router -->
+        <copy file="${i2pbase}/build/router.jar" todir="${jar.libs.dir}" />
+
+        <!-- i2ptunnel -->
         <jar destfile="${jar.libs.dir}/i2ptunnel.jar" >
             <zipfileset src="${i2pbase}/apps/i2ptunnel/java/build/i2ptunnel.jar" >
                 <exclude name="net/i2p/i2ptunnel/I2PTunnelGUI.class" />
@@ -64,6 +73,9 @@
         <!-- addressbook -->
         <copy file="${i2pbase}/apps/addressbook/dist/addressbook.jar" todir="${jar.libs.dir}" />
 
+        <!-- bob -->
+        <copy file="${i2pbase}/apps/BOB/dist/BOB.jar" todir="${jar.libs.dir}" />
+
     </target>
 
     <target name="clean">