diff --git a/apps/i2pcontrol/build.gradle b/apps/i2pcontrol/build.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..a8c1173e3f2f38fbd65e351c3a77a9b84c07ea18
--- /dev/null
+++ b/apps/i2pcontrol/build.gradle
@@ -0,0 +1,22 @@
+plugins {
+    id 'war'
+}
+
+sourceSets {
+    main {
+        java {
+            srcDir 'java'
+        }
+    }
+}
+
+dependencies {
+    providedCompile project(':router')
+    providedCompile project(':apps:jetty')
+    providedCompile files('../../installer/lib/wrapper/all/wrapper.jar')
+}
+
+war {
+    archiveName 'jsonrpc.war'
+    webXml = file('web.xml')
+}
diff --git a/apps/imagegen/build.gradle b/apps/imagegen/build.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..8ee45832a68f25389c5467c77025ee6e1b981346
--- /dev/null
+++ b/apps/imagegen/build.gradle
@@ -0,0 +1,25 @@
+plugins {
+    id 'war'
+}
+
+sourceSets {
+    main {
+        java {
+            srcDir 'identicon/core/src/main/java'
+            srcDir 'imagegen/webapp/src/main/java'
+            srcDir 'zxing/core/src/main/java'
+            srcDir 'zxing/javase/src/main/java'
+        }
+    }
+}
+
+dependencies {
+    compile project(':core')
+    providedCompile project(':apps:jetty')
+}
+
+war {
+    from 'imagegen/webapp/src/main/webapp/imagegen.css'
+    from 'imagegen/webapp/src/main/webapp/index.html'
+    webXml = file('imagegen/webapp/src/main/webapp/WEB-INF/web.xml')
+}
diff --git a/settings.gradle b/settings.gradle
index 1a12aa70014c20df2c5843f494aab4f5949b967b..281bf7e3247e05604e2fb1e7d5d52312a49e61e7 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -12,9 +12,8 @@ include 'apps:jrobin'
 include 'apps:addressbook'
 include 'apps:susidns'
 include 'apps:susimail'
+include 'apps:i2pcontrol'
+include 'apps:imagegen'
 include 'core'
 include 'installer'
 include 'router'
-// TODO
-//include 'apps:i2pcontrol'
-//include 'apps:imagegen'