diff --git a/jastadd-mquat-solver-genetic/build.gradle b/jastadd-mquat-solver-genetic/build.gradle
index 4ff9f9bd38fd0ce07df5eba9e9a082f0826299f5..ca6d743d207ec9c18d8d59362735f086bd5253f0 100644
--- a/jastadd-mquat-solver-genetic/build.gradle
+++ b/jastadd-mquat-solver-genetic/build.gradle
@@ -1,5 +1,6 @@
 
 apply plugin: 'java'
+apply plugin: 'application'
 
 sourceCompatibility = 1.8
 
@@ -7,6 +8,16 @@ repositories {
     mavenCentral()
 }
 
+jar {
+    manifest {
+        attributes "Main-Class": 'de.tudresden.inf.st.mquat.solving.genetic.GeneticMain'
+    }
+
+    from {
+        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
+    }
+}
+
 dependencies {
     compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.10.0'
     compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.10.0'
diff --git a/jastadd-mquat-solver-genetic/src/main/java/de/tudresden/inf/st/mquat/solving/genetic/GeneticMain.java b/jastadd-mquat-solver-genetic/src/main/java/de/tudresden/inf/st/mquat/solving/genetic/GeneticMain.java
new file mode 100644
index 0000000000000000000000000000000000000000..993342457355527ce927d45ca2fa76473e6e85d6
--- /dev/null
+++ b/jastadd-mquat-solver-genetic/src/main/java/de/tudresden/inf/st/mquat/solving/genetic/GeneticMain.java
@@ -0,0 +1,43 @@
+package de.tudresden.inf.st.mquat.solving.genetic;
+
+import de.tudresden.inf.st.mquat.generator.ScenarioDescription;
+import de.tudresden.inf.st.mquat.generator.ScenarioGenerator;
+import de.tudresden.inf.st.mquat.jastadd.model.Root;
+import de.tudresden.inf.st.mquat.jastadd.model.Solution;
+import de.tudresden.inf.st.mquat.solving.BenchmarkableSolver;
+import de.tudresden.inf.st.mquat.solving.SolvingException;
+
+import java.util.concurrent.TimeUnit;
+
+public class GeneticMain {
+
+  public static void main(String[] args) {
+
+    ScenarioGenerator generator = new ScenarioGenerator(new ScenarioDescription(1,1, 0,1,0,2, 10, 10, 1, 1, 0));
+
+
+    Root model = generator.generate();
+
+
+    System.out.println("Problem has an initial solution with objective " + generator.getInitialSolution().computeObjective());
+
+    BenchmarkableSolver solver = new GeneticSolver(GeneticSolver.SelectorType.NSGA2, 100,100);
+
+    solver.setTimeout(30, TimeUnit.SECONDS);
+
+
+
+    try {
+      Solution solution = solver.solve(model);
+
+      System.out.println("Solution is valid: " + solution.isValid());
+
+      System.out.println("Found solution with objective " + solution.computeObjective());
+
+    } catch (SolvingException e) {
+      e.printStackTrace();
+    }
+
+  }
+
+}