diff --git a/jastadd-mquat-base/src/main/jastadd/solvers/Helpers.jadd b/jastadd-mquat-base/src/main/jastadd/solvers/Helpers.jadd
index 8ca652ded0899cb8abaf3dc61d50ad653b1cb912..5ffb35283a64a43a93ad29d1524c507bf829ff8f 100644
--- a/jastadd-mquat-base/src/main/jastadd/solvers/Helpers.jadd
+++ b/jastadd-mquat-base/src/main/jastadd/solvers/Helpers.jadd
@@ -1,27 +1,5 @@
 aspect Helpers {
 
-  public static void Clause.populateResourceMapping(ResourceMapping mapping, ResourceRequirement requirement, Resource resource) {
-
-    for (ResourceRequirement subRequirement : requirement.getResourceRequirementList()) {
-      int fittingResourceCount = 0;
-      for (int currentInstance = 0; currentInstance < subRequirement.getNumInstance(); currentInstance++) {
-        Instance instance = subRequirement.getInstance(currentInstance);
-        for (int currentResource = 0; currentResource < resource.getNumSubResource(); currentResource++) {
-          Resource subResource = resource.getSubResource(currentResource);
-          if (subResource.getType().getRef() == subRequirement.getResourceTypeRef().getRef()) {
-            if (currentInstance == fittingResourceCount) {
-              ResourceMapping newMapping = new ResourceMapping(instance, subResource, new de.tudresden.inf.st.mquat.jastadd.model.List<>());
-              mapping.addResourceMapping(newMapping);
-              populateResourceMapping(newMapping, subRequirement, subResource);
-              fittingResourceCount++;
-            }
-            currentInstance++;
-          }
-        }
-      }
-    }
-  }
-
   uncache Clause.simpleAssignment(Request request, Resource resource);
   syn Assignment Clause.simpleAssignment(Request request, Resource resource) {
     Assignment assignment = new Assignment();
@@ -31,7 +9,7 @@ aspect Helpers {
       assignment.setImplementation(impl);
 
       ResourceMapping mapping=new ResourceMapping(impl.getResourceRequirement().getInstance(0),resource,new de.tudresden.inf.st.mquat.jastadd.model.List<>());
-      populateResourceMapping(mapping,impl.getResourceRequirement(),resource);
+      Resource.populateResourceMapping(mapping,impl.getResourceRequirement(),resource);
       assignment.setResourceMapping(mapping);
     }
     return assignment;
@@ -42,6 +20,8 @@ aspect Helpers {
   public Solution Root.createRandomSolution(java.util.Random random) {
     Solution solution = new Solution();
 
+    solution.setModel(this);
+
     // create a resource bucket
     java.util.List<Resource> resourceList = populateResourceList(this.getHardwareModel().getResourceList(), new ArrayList<>());
 
@@ -97,6 +77,8 @@ aspect Helpers {
       } while (chosenResource.getType().getRef() != requiredResourceType);
       mapping.setResource(resourceList.remove(resourceNumber));
 
+      Resource.populateResourceMapping(mapping, resourceRequirement, chosenResource);
+
       assignment.setResourceMapping(mapping);
     }
 
diff --git a/jastadd-mquat-base/src/main/jastadd/solvers/SolverUtils.jadd b/jastadd-mquat-base/src/main/jastadd/solvers/SolverUtils.jadd
new file mode 100644
index 0000000000000000000000000000000000000000..4b1e68bfd87185baa744d631f7211983ed50eb8d
--- /dev/null
+++ b/jastadd-mquat-base/src/main/jastadd/solvers/SolverUtils.jadd
@@ -0,0 +1,24 @@
+aspect SolverUtils {
+
+  public static void Resource.populateResourceMapping(ResourceMapping mapping, ResourceRequirement requirement, Resource resource) {
+
+    for (ResourceRequirement subRequirement : requirement.getResourceRequirementList()) {
+      int fittingResourceCount = 0;
+      for (int currentInstance = 0; currentInstance < subRequirement.getNumInstance(); currentInstance++) {
+        Instance instance = subRequirement.getInstance(currentInstance);
+        for (int currentResource = 0; currentResource < resource.getNumSubResource(); currentResource++) {
+          Resource subResource = resource.getSubResource(currentResource);
+          if (subResource.getType().getRef() == subRequirement.getResourceTypeRef().getRef()) {
+            if (currentInstance == fittingResourceCount) {
+              ResourceMapping newMapping = new ResourceMapping(instance, subResource, new de.tudresden.inf.st.mquat.jastadd.model.List<>());
+              mapping.addResourceMapping(newMapping);
+              populateResourceMapping(newMapping, subRequirement, subResource);
+              fittingResourceCount++;
+            }
+            currentInstance++;
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/jastadd-mquat-solver-aco/src/main/java/ir/ac/ui/eng/ACOSolver.java b/jastadd-mquat-solver-aco/src/main/java/ir/ac/ui/eng/ACOSolver.java
index 6b7fbb7f55286f0daec47ca8d62ca76389d5e5e1..18cc43d68f996f64645fe029266c53dc9638bcfc 100644
--- a/jastadd-mquat-solver-aco/src/main/java/ir/ac/ui/eng/ACOSolver.java
+++ b/jastadd-mquat-solver-aco/src/main/java/ir/ac/ui/eng/ACOSolver.java
@@ -94,7 +94,7 @@ public class ACOSolver implements BenchmarkableSolver {
 
     ResourceMapping mapping = new ResourceMapping(impl.getResourceRequirement().getInstance(0), resource,
         new de.tudresden.inf.st.mquat.jastadd.model.List<>());
-    SolverUtils.populateResourceMapping(mapping, impl.getResourceRequirement(), resource);
+    Resource.populateResourceMapping(mapping, impl.getResourceRequirement(), resource);
     assignment.setResourceMapping(mapping);
   }
 
diff --git a/jastadd-mquat-solver-aco/src/main/java/ir/ac/ui/eng/Ant.java b/jastadd-mquat-solver-aco/src/main/java/ir/ac/ui/eng/Ant.java
index 61e26b98219487a45be0c4b86d95ab63ee0ef4a6..c74acc69f3748627b158fa03951abea57b11d2b7 100644
--- a/jastadd-mquat-solver-aco/src/main/java/ir/ac/ui/eng/Ant.java
+++ b/jastadd-mquat-solver-aco/src/main/java/ir/ac/ui/eng/Ant.java
@@ -46,7 +46,7 @@ public class Ant {
 
     ResourceMapping mapping = new ResourceMapping(impl.getResourceRequirement().getInstance(0), resource,
         new de.tudresden.inf.st.mquat.jastadd.model.List<>());
-    SolverUtils.populateResourceMapping(mapping, impl.getResourceRequirement(), resource);
+    Resource.populateResourceMapping(mapping, impl.getResourceRequirement(), resource);
     assignment.setResourceMapping(mapping);
   }
 
diff --git a/jastadd-mquat-solver-emfer/src/main/java/uniks/EMFeRSolver.java b/jastadd-mquat-solver-emfer/src/main/java/uniks/EMFeRSolver.java
index f7abed472d04ee9fa0a7fdf6e099ed02561ee1f0..06d373b6bc948cc0644d9114df96e97bcb3a2d8a 100644
--- a/jastadd-mquat-solver-emfer/src/main/java/uniks/EMFeRSolver.java
+++ b/jastadd-mquat-solver-emfer/src/main/java/uniks/EMFeRSolver.java
@@ -51,7 +51,7 @@ public class EMFeRSolver implements BenchmarkableSolver {
       Implementation impl = assignment.getImplementation();
 
       ResourceMapping mapping = new ResourceMapping(impl.getResourceRequirement().getInstance(0), resource, new de.tudresden.inf.st.mquat.jastadd.model.List<>());
-      SolverUtils.populateResourceMapping(mapping, impl.getResourceRequirement(), resource);
+      Resource.populateResourceMapping(mapping, impl.getResourceRequirement(), resource);
       assignment.setResourceMapping(mapping);
    }
 
diff --git a/jastadd-mquat-solver-emfer/src/main/java/uniks/EMFeRTrafos.java b/jastadd-mquat-solver-emfer/src/main/java/uniks/EMFeRTrafos.java
index 92705dc0777de0101e87f411ba27c6a74841affa..c5b3fd4c91723f4a5efe234013811d10a5d7e21b 100644
--- a/jastadd-mquat-solver-emfer/src/main/java/uniks/EMFeRTrafos.java
+++ b/jastadd-mquat-solver-emfer/src/main/java/uniks/EMFeRTrafos.java
@@ -104,7 +104,7 @@ public class EMFeRTrafos
             Resource resource =  findResource(eAssignment.getNodeName());
             ResourceMapping resourceMapping = new ResourceMapping(instance, resource, new List<>());
 
-            SolverUtils.populateResourceMapping(resourceMapping, implementation.getResourceRequirement(), resource);
+            Resource.populateResourceMapping(resourceMapping, implementation.getResourceRequirement(), resource);
 
             dAssignment.setResourceMapping(resourceMapping);
 
@@ -154,7 +154,7 @@ public class EMFeRTrafos
          {
             Resource resource = findResource(eSubAssignment.getNodeName());
             ResourceMapping resourceMapping = new ResourceMapping(instance, resource, new List<>());
-            SolverUtils.populateResourceMapping(resourceMapping, subImpl.getResourceRequirement(), resource);
+            Resource.populateResourceMapping(resourceMapping, subImpl.getResourceRequirement(), resource);
             dSubAssignment.setResourceMapping(resourceMapping);
 
             if (dSubAssignment.isValid())
@@ -208,7 +208,7 @@ public class EMFeRTrafos
             {
                ResourceMapping resourceMapping = new ResourceMapping(instance, resource, new List<>());
 
-               SolverUtils.populateResourceMapping(resourceMapping, implementation.getResourceRequirement(), resource);
+               Resource.populateResourceMapping(resourceMapping, implementation.getResourceRequirement(), resource);
 
                dAssignment.setResourceMapping(resourceMapping);
 
@@ -251,7 +251,7 @@ public class EMFeRTrafos
             for (Resource resource : availableResources)
             {
                ResourceMapping resourceMapping = new ResourceMapping(instance, resource, new List<>());
-               SolverUtils.populateResourceMapping(resourceMapping, subImpl.getResourceRequirement(), resource);
+               Resource.populateResourceMapping(resourceMapping, subImpl.getResourceRequirement(), resource);
                dSubAssignment.setResourceMapping(resourceMapping);
 
                if (dSubAssignment.isValid())
diff --git a/jastadd-mquat-solver-simple/src/main/java/de/tudresden/inf/st/mquat/solving/simple/SimpleSolver.java b/jastadd-mquat-solver-simple/src/main/java/de/tudresden/inf/st/mquat/solving/simple/SimpleSolver.java
index e7129090c1da8afd3e91d3600b66e68dbd905ea5..ebfbdf66023acc4e6c0e5120d7f2fee44a400684 100644
--- a/jastadd-mquat-solver-simple/src/main/java/de/tudresden/inf/st/mquat/solving/simple/SimpleSolver.java
+++ b/jastadd-mquat-solver-simple/src/main/java/de/tudresden/inf/st/mquat/solving/simple/SimpleSolver.java
@@ -40,7 +40,7 @@ public class SimpleSolver implements BenchmarkableSolver {
     Implementation impl = assignment.getImplementation();
 
     ResourceMapping mapping = new ResourceMapping(impl.getResourceRequirement().getInstance(0), resource, new de.tudresden.inf.st.mquat.jastadd.model.List<>());
-    SolverUtils.populateResourceMapping(mapping, impl.getResourceRequirement(), resource);
+    Resource.populateResourceMapping(mapping, impl.getResourceRequirement(), resource);
     assignment.setResourceMapping(mapping);
   }
 
diff --git a/jastadd-mquat-solver/src/main/java/de/tudresden/inf/st/mquat/solving/SolverUtils.java b/jastadd-mquat-solver/src/main/java/de/tudresden/inf/st/mquat/solving/SolverUtils.java
index 70af777030622b04bc7574b529c5c7c92d110c19..173bb4c90f93e4050124fa304e2b08dcf2e2b32a 100644
--- a/jastadd-mquat-solver/src/main/java/de/tudresden/inf/st/mquat/solving/SolverUtils.java
+++ b/jastadd-mquat-solver/src/main/java/de/tudresden/inf/st/mquat/solving/SolverUtils.java
@@ -12,28 +12,6 @@ import java.util.concurrent.TimeUnit;
 @SuppressWarnings("Duplicates")
 public class SolverUtils {
 
-  public static void populateResourceMapping(ResourceMapping mapping, ResourceRequirement requirement, Resource resource) {
-
-    for (ResourceRequirement subRequirement : requirement.getResourceRequirementList()) {
-      int fittingResourceCount = 0;
-      for (int currentInstance = 0; currentInstance < subRequirement.getNumInstance(); currentInstance++) {
-        Instance instance = subRequirement.getInstance(currentInstance);
-        for (int currentResource = 0; currentResource < resource.getNumSubResource(); currentResource++) {
-          Resource subResource = resource.getSubResource(currentResource);
-          if (subResource.getType().getRef() == subRequirement.getResourceTypeRef().getRef()) {
-            if (currentInstance == fittingResourceCount) {
-              ResourceMapping newMapping = new ResourceMapping(instance, subResource, new de.tudresden.inf.st.mquat.jastadd.model.List<>());
-              mapping.addResourceMapping(newMapping);
-              populateResourceMapping(newMapping, subRequirement, subResource);
-              fittingResourceCount++;
-            }
-            currentInstance++;
-          }
-        }
-      }
-    }
-  }
-
   public static long populateSolution(List<Assignment> listOfInitialAssignments, Solution result, Logger logger)
       throws SolvingException {
     StopWatch watch = StopWatch.start();
@@ -44,7 +22,7 @@ public class SolverUtils {
       Resource resource = assignment.getResource();
 
       ResourceMapping mapping = new ResourceMapping(impl.getResourceRequirement().getInstance(0), resource, new de.tudresden.inf.st.mquat.jastadd.model.List<>());
-      populateResourceMapping(mapping, impl.getResourceRequirement(), resource);
+      Resource.populateResourceMapping(mapping, impl.getResourceRequirement(), resource);
       assignment.setResourceMapping(mapping);
 
 //      for (ResourceRequirement rr : impl.getResourceRequirementList()) {
diff --git a/jastadd-mquat-solver/src/test/java/de/tudresden/inf/st/mquat/solving/HandwrittenTestSuite.java b/jastadd-mquat-solver/src/test/java/de/tudresden/inf/st/mquat/solving/HandwrittenTestSuite.java
index 73072275cb9db130134ab2cae5e4f55adb6de65c..b15bc10983ea3f192f24141216015ae80f7e32ca 100644
--- a/jastadd-mquat-solver/src/test/java/de/tudresden/inf/st/mquat/solving/HandwrittenTestSuite.java
+++ b/jastadd-mquat-solver/src/test/java/de/tudresden/inf/st/mquat/solving/HandwrittenTestSuite.java
@@ -97,6 +97,11 @@ public abstract class HandwrittenTestSuite {
     }
     collector.checkThat("Solution is not valid", true,
         equalTo(modelAndSolution.getSecondElement().isValid()));
+
+    logger.info("completeness: " + modelAndSolution.getSecondElement().evaluateSoftwareCompleteness());
+    logger.info("sw-validity: " + modelAndSolution.getSecondElement().evaluateSoftwareValidity());
+    logger.info("validity: " + modelAndSolution.getSecondElement().evaluateValidity());
+    logger.info("objective: " + modelAndSolution.getSecondElement().computeObjective());
   }
 
   @Test