diff --git a/build.gradle b/build.gradle
index 6827860869614f2d0ff575cfb5e6229e6d4a3806..f0887c989ad703da8eb141385f19d1d098627dd6 100644
--- a/build.gradle
+++ b/build.gradle
@@ -10,20 +10,28 @@ buildscript {
   }
 }
 
-// Plugins for all projects
+// Variables used to distinct different subprojects
+def useCaseProjects = subprojects.findAll {it -> it.name.matches('uc(.)*')}
+def useCaseApplications = subprojects.findAll {it -> it.name.matches('uc[0-9]+-application')}
+def useCaseGenerators = subprojects.findAll {it -> it.name.matches('uc[0-9]+-workload-generator*')}
+def commonProjects = subprojects.findAll {it -> it.name.matches('(.)*common(s?)(.)*')}
+
+// Plugins
 allprojects {
   apply plugin: 'eclipse'
 }
 
-// Plugins for subprojects
 subprojects {
-  apply plugin: 'application'
   apply plugin: 'checkstyle'
   apply plugin: 'pmd'
   apply plugin: 'com.github.spotbugs'
   apply plugin: 'java-library'
 }
 
+configure(useCaseProjects){
+    apply plugin: 'application'
+}
+
 // Java version for all subprojects
 subprojects {
   java {
@@ -44,22 +52,59 @@ allprojects {
 	    maven {
 	    	url "https://oss.sonatype.org/content/repositories/snapshots/"
 	    }
+      maven {
+        url 'https://packages.confluent.io/maven/'
+    }
 	}
 }
 
-// Dependencies
-subprojects {
+// Dependencies for all use case applications
+configure(useCaseApplications) {
   dependencies {
-      // These dependencies is exported to consumers, that is to say found on their compile classpath.
-      api('org.industrial-devops:titan-ccp-common:0.0.3-SNAPSHOT') { changing = true }
-      api 'net.kieker-monitoring:kieker:1.14-SNAPSHOT'
-      api 'net.sourceforge.teetime:teetime:3.0'
+      // These dependencies are used internally, and not exposed to consumers on their own compile classpath.
+      implementation('org.industrial-devops:titan-ccp-common:0.0.3-SNAPSHOT') { changing = true }      // This branch depends still on old version of titan-ccp-common
+      implementation('org.industrial-devops:titan-ccp-common-kafka:0.1.0-SNAPSHOT') { changing = true }
+      implementation 'com.google.guava:guava:24.1-jre'
+      implementation 'org.jctools:jctools-core:2.1.1'
+      implementation 'org.slf4j:slf4j-simple:1.6.1'
 
+      // Use JUnit test framework
+      testImplementation 'junit:junit:4.12'
+      
+      implementation('org.industrial-devops:titan-ccp-common:0.0.3-SNAPSHOT') { changing = true }
+  }
+}
+
+// Dependencies for all use case generators
+configure(useCaseGenerators) {
+  dependencies {
       // These dependencies are used internally, and not exposed to consumers on their own compile classpath.
-      implementation 'org.apache.kafka:kafka-clients:2.1.0'
+      // implementation('org.industrial-devops:titan-ccp-common:0.1.0-SNAPSHOT') { changing = true }
+      implementation('org.industrial-devops:titan-ccp-common-kafka:0.0.1-SNAPSHOT') { changing = true }
       implementation 'com.google.guava:guava:24.1-jre'
       implementation 'org.jctools:jctools-core:2.1.1'
       implementation 'org.slf4j:slf4j-simple:1.6.1'
+      implementation project(':workload-generator-common')
+
+      // maintain build of generators
+      implementation 'net.kieker-monitoring:kieker:1.14-SNAPSHOT'
+      implementation('org.industrial-devops:titan-ccp-common:0.0.3-SNAPSHOT') { changing = true }
+
+      // Use JUnit test framework
+      testImplementation 'junit:junit:4.12'
+  }
+}
+
+// Dependencies for all commons
+configure(commonProjects) {
+  dependencies {
+      // These dependencies is exported to consumers, that is to say found on their compile classpath.
+      api 'org.apache.kafka:kafka-clients:2.4.0'
+      
+      // These dependencies are used internally, and not exposed to consumers on their own compile classpath.
+      implementation 'org.slf4j:slf4j-simple:1.6.1'
+      implementation('org.industrial-devops:titan-ccp-common:0.0.3-SNAPSHOT') { changing = true }      // This branch depends still on old version of titan-ccp-common
+      implementation('org.industrial-devops:titan-ccp-common-kafka:0.1.0-SNAPSHOT') { changing = true }
 
       // Use JUnit test framework
       testImplementation 'junit:junit:4.12'
diff --git a/settings.gradle b/settings.gradle
index a8da5d5dfd548bc9c359c7c21902acce224e77a4..4a8dfe3a6f7372f3fef319f94afef877e5fe74d8 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,5 +1,7 @@
 rootProject.name = 'scalability-benchmarking'
 
+include 'workload-generator-common'
+
 include 'uc1-workload-generator'
 include 'uc1-application'
 
@@ -10,6 +12,4 @@ include 'uc3-workload-generator'
 include 'uc3-application'
 
 include 'uc4-workload-generator'
-include 'uc4-application'
-
-include 'workload-generator-common'
\ No newline at end of file
+include 'uc4-application'
\ No newline at end of file
diff --git a/uc1-workload-generator/build.gradle b/uc1-workload-generator/build.gradle
index cba0ffcbcb3b74a40d45e27ac6874c7006fc9726..d934bd09de1d64cadac982669d7cab5b564f0dd5 100644
--- a/uc1-workload-generator/build.gradle
+++ b/uc1-workload-generator/build.gradle
@@ -1,5 +1 @@
 mainClassName = "spesb.uc1.workloadgenerator.LoadGenerator"
-
-dependencies {
-    compile project(':workload-generator-common')
-}
\ No newline at end of file
diff --git a/uc2-workload-generator/build.gradle b/uc2-workload-generator/build.gradle
index 66007916808c78566f16e42b2e6f5a973a7c0ae1..9b35bdaa4d618943a61042d9bbf93d4c9c4f35a2 100644
--- a/uc2-workload-generator/build.gradle
+++ b/uc2-workload-generator/build.gradle
@@ -1,5 +1 @@
-mainClassName = "spesb.uc2.workloadgenerator.LoadGenerator"
-
-dependencies {
-    compile project(':workload-generator-common')
-}
\ No newline at end of file
+mainClassName = "spesb.uc2.workloadgenerator.LoadGenerator"
\ No newline at end of file
diff --git a/uc3-workload-generator/build.gradle b/uc3-workload-generator/build.gradle
index a635010f46d13e0938fecb487843a84fcacf283b..e27cf26d28ba0d3f85a4c2a11e4eae2b85f29e4c 100644
--- a/uc3-workload-generator/build.gradle
+++ b/uc3-workload-generator/build.gradle
@@ -1,5 +1 @@
 mainClassName = "spesb.uc3.workloadgenerator.LoadGenerator"
-
-dependencies {
-    compile project(':workload-generator-common')
-}
\ No newline at end of file
diff --git a/uc4-workload-generator/build.gradle b/uc4-workload-generator/build.gradle
index de0d5028d58cb7e9ccd384c0d56e295b33d82e87..8bbdedf4f7c41da73dd2d591b8fd56830d7060b7 100644
--- a/uc4-workload-generator/build.gradle
+++ b/uc4-workload-generator/build.gradle
@@ -1,5 +1 @@
 mainClassName = "spesb.uc4.workloadgenerator.LoadGenerator"
-
-dependencies {
-    compile project(':workload-generator-common')
-}
\ No newline at end of file
diff --git a/workload-generator-common/build.gradle b/workload-generator-common/build.gradle
index fa81c5036e7e7af168f065087255f3bafeea1384..5ce6a38befce006491cdc25f843a23256d9f55a2 100644
--- a/workload-generator-common/build.gradle
+++ b/workload-generator-common/build.gradle
@@ -1,27 +1,3 @@
-apply plugin: 'java-library'
-
-buildscript {
-  repositories {
-    maven {
-      url "https://plugins.gradle.org/m2/"
-    }
-  }
-}
-
-sourceCompatibility = "1.11"
-targetCompatibility = "1.11"
-
 dependencies {
     compile 'org.apache.curator:curator-recipes:4.3.0'
-    compile 'org.slf4j:slf4j-simple:1.6.1'
-
-    // Use JUnit test framework
-    testCompile 'junit:junit:4.12'
-}
-
-eclipse {
-    classpath {
-       downloadSources=true
-       downloadJavadoc=true
-    }
 }
\ No newline at end of file