Index: /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/convert/MaxTermConverter.java
===================================================================
--- /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/convert/MaxTermConverter.java	(revision 88)
+++ /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/convert/MaxTermConverter.java	(revision 89)
@@ -2,9 +2,7 @@
 
 import java.math.BigInteger;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Comparator;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -64,16 +62,13 @@
         project = (Project) constraint.getTopLevelParent();
         
-        List<ConstraintSyntaxTree> parts = createCNFParts(constraint.getConsSyntax());
-        for (int i = 0, n = parts.size(); i < n; i++) {
-            addConstraint(parts.get(i));
-        }
-    }
-    
-    /**
-     * Creates a list of parts of CNF for the given {@link Constraint}.
+        createCNFParts(constraint.getConsSyntax());
+    }
+    
+    /**
+     * Converts the given expression into CNF and adds it via
+     * {@link MaxTermConverter#addConstraint(ConstraintSyntaxTree)}.
      * @param originalConstraint A boolean expression
-     * @return List of parts of CNF (boolean expressions with OR and NOT).
-     */
-    private List<ConstraintSyntaxTree> createCNFParts(ConstraintSyntaxTree originalConstraint) {
+     */
+    private void createCNFParts(ConstraintSyntaxTree originalConstraint) {
         // Get an array of all variables in the constraint
         DeclrationInConstraintFinder finder = new DeclrationInConstraintFinder(originalConstraint);
@@ -103,14 +98,11 @@
         Configuration config = new Configuration(singleConstraintProject);
         
-        List<ConstraintSyntaxTree> parts = new ArrayList<ConstraintSyntaxTree>();
         if (declarationArray.length >= 16) {
 //            System.out.println("Handling big constraint: " + declarationArray.length);
-            handleBigConstraint(originalConstraint, declarationArray, config, parts);
+            handleBigConstraint(originalConstraint, declarationArray, config);
 //            System.out.println("Done.");
         } else {
-            handleSmallConstraint(originalConstraint, declarationArray, config, parts);
-        }
-        
-        return parts;
+            handleSmallConstraint(originalConstraint, declarationArray, config);
+        }
     }
 
@@ -123,8 +115,7 @@
      * @param config A temporary {@link Configuration} containing only <tt>originalConstraint</tt>
      *     and <tt>declarationArray</tt>
-     * @param parts An empty list, where the resulting disjunctions terms of the CNF formula shall be added to
      */
     protected void handleSmallConstraint(ConstraintSyntaxTree originalConstraint, AbstractVariable[] declarationArray,
-        Configuration config, List<ConstraintSyntaxTree> parts) {
+        Configuration config) {
         
         EvaluationVisitor evalVisitor = new EvaluationVisitor();
@@ -165,5 +156,5 @@
             // if the result it false, add the negated combination to the list of expressions
             if (!result) {
-                parts.add(createNegatedORExpression(declarationArray, state)); 
+                addConstraint(createNegatedORExpression(declarationArray, state)); 
             }
             
@@ -182,8 +173,7 @@
      * @param config A temporary {@link Configuration} containing only <tt>originalConstraint</tt>
      *     and <tt>declarationArray</tt>
-     * @param parts An empty list, where the resulting disjunctions terms of the CNF formula shall be added to
      */
     protected void handleBigConstraint(ConstraintSyntaxTree originalConstraint, AbstractVariable[] declarationArray,
-            Configuration config, List<ConstraintSyntaxTree> parts) {
+            Configuration config) {
         
         EvaluationVisitor evalVisitor = new EvaluationVisitor();
@@ -228,5 +218,5 @@
             // if the result it false, add the negated combination to the list of expressions
             if (!result) {
-                parts.add(createNegatedORExpression(declarationArray, state)); 
+                addConstraint(createNegatedORExpression(declarationArray, state)); 
             }
             
@@ -242,5 +232,5 @@
      * @return the {@link ConstraintSyntaxTree}
      */
-    private ConstraintSyntaxTree createNegatedORExpression(AbstractVariable[] variables, boolean[] states) {
+    protected ConstraintSyntaxTree createNegatedORExpression(AbstractVariable[] variables, boolean[] states) {
         ConstraintSyntaxTree call = null;
         if (!states[0]) {
@@ -250,5 +240,5 @@
         }
         
-        for (int i = 1; i < variables.length; i++) {
+        for (int i = 1; i < states.length; i++) {
             ConstraintSyntaxTree variable = getVariable(variables[i]);
             if (states[i]) {
@@ -264,5 +254,5 @@
      * @param cst The constraint to add.
      */
-    private void addConstraint(ConstraintSyntaxTree cst) {
+    protected void addConstraint(ConstraintSyntaxTree cst) {
         Constraint constraint = new Constraint(project);
         try {
Index: /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/convert/MaxTermConverter2.java
===================================================================
--- /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/convert/MaxTermConverter2.java	(revision 88)
+++ /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/convert/MaxTermConverter2.java	(revision 89)
@@ -1,5 +1,3 @@
 package de.uni_hildesheim.sse.trans.convert;
-
-import java.util.List;
 
 import de.uni_hildesheim.sse.model.confModel.AssignmentState;
@@ -8,8 +6,6 @@
 import de.uni_hildesheim.sse.model.confModel.IDecisionVariable;
 import de.uni_hildesheim.sse.model.cst.ConstraintSyntaxTree;
-import de.uni_hildesheim.sse.model.cst.OCLFeatureCall;
 import de.uni_hildesheim.sse.model.cstEvaluation.EvaluationVisitor;
 import de.uni_hildesheim.sse.model.varModel.AbstractVariable;
-import de.uni_hildesheim.sse.model.varModel.datatypes.OclKeyWords;
 import de.uni_hildesheim.sse.model.varModel.values.BooleanValue;
 import de.uni_hildesheim.sse.trans.Bundle;
@@ -29,14 +25,14 @@
     @Override
     protected void handleSmallConstraint(ConstraintSyntaxTree originalConstraint, AbstractVariable[] declarationArray,
-        Configuration config, List<ConstraintSyntaxTree> parts) {
+        Configuration config) {
         
-        handleConstraint(originalConstraint, declarationArray, config, parts, 0);
+        handleConstraint(originalConstraint, declarationArray, config, 0);
     }
     
     @Override
     protected void handleBigConstraint(ConstraintSyntaxTree originalConstraint, AbstractVariable[] declarationArray,
-        Configuration config, List<ConstraintSyntaxTree> parts) {
+        Configuration config) {
         
-        handleConstraint(originalConstraint, declarationArray, config, parts, 0);
+        handleConstraint(originalConstraint, declarationArray, config, 0);
     }
     
@@ -48,9 +44,8 @@
      * @param config A temporary {@link Configuration} containing only <tt>originalConstraint</tt>
      *     and <tt>declarationArray</tt>
-     * @param parts An empty list, where the resulting disjunctions terms of the CNF formula shall be added to
      * @param var the variable to change
      */
-    protected void handleConstraint(ConstraintSyntaxTree originalConstraint,
-            AbstractVariable[] declarationArray, Configuration config, List<ConstraintSyntaxTree> parts, int var) {
+    protected void handleConstraint(ConstraintSyntaxTree originalConstraint, AbstractVariable[] declarationArray,
+            Configuration config, int var) {
         
         if (var >= declarationArray.length) {
@@ -64,7 +59,7 @@
             int result = checkConstraint(originalConstraint, config);
             if (result == 0) {
-                addExpression(parts, declarationArray, var, config);
+                addExpression(declarationArray, var, config);
             } else if (result == -1) {
-                handleConstraint(originalConstraint, declarationArray, config, parts, var + 1);
+                handleConstraint(originalConstraint, declarationArray, config, var + 1);
             }
             
@@ -72,7 +67,7 @@
             result = checkConstraint(originalConstraint, config);
             if (result == 0) {
-                addExpression(parts, declarationArray, var, config);
+                addExpression(declarationArray, var, config);
             } else if (result == -1) {
-                handleConstraint(originalConstraint, declarationArray, config, parts, var + 1);
+                handleConstraint(originalConstraint, declarationArray, config, var + 1);
             }
             
@@ -93,5 +88,4 @@
      */
     private int checkConstraint(ConstraintSyntaxTree constraint, Configuration config) {
-        
         EvaluationVisitor evaluationVisitor = new EvaluationVisitor(config, null, false, null);
         constraint.accept(evaluationVisitor);
@@ -107,43 +101,16 @@
     
     /**
-     * Adds the boolean expression to the list of expressions.
+     * Adds the boolean expression to the model via {@link MaxTermConverter#addConstraint(ConstraintSyntaxTree)}.
      * 
-     * @param parts The List that the new part is added to
      * @param declarationArray Array with all variable declarations
      * @param var The number of variables that is defined (0 to var -1 in the declaration array)
      * @param config The {@link Configuration} that holds the states of the variables
      */
-    private void addExpression(List<ConstraintSyntaxTree> parts, AbstractVariable[] declarationArray, int var,
-            Configuration config) {
-        
+    private void addExpression(AbstractVariable[] declarationArray, int var, Configuration config) {
         boolean[] state = new boolean[var + 1];
         for (int i = 0; i < state.length; i++) {
             state[i] = ((BooleanValue) config.getDecision(declarationArray[i]).getValue()) == BooleanValue.TRUE;
         }
-        parts.add(createNegatedORExpression(declarationArray, state));
-    }
-    
-    /**
-     * Creates an {@link ConstraintSyntaxTree} with the variables negated and OR'd together.
-     * @param variables Array of Variables
-     * @param states Array whether each variable is true or false
-     * @return the {@link ConstraintSyntaxTree}
-     */
-    private ConstraintSyntaxTree createNegatedORExpression(AbstractVariable[] variables, boolean[] states) {
-        ConstraintSyntaxTree call = null;
-        if (!states[0]) {
-            call = getVariable(variables[0]);
-        } else {
-            call = new OCLFeatureCall(getVariable(variables[0]), OclKeyWords.NOT);
-        }
-        
-        for (int i = 1; i < states.length; i++) {
-            ConstraintSyntaxTree variable = getVariable(variables[i]);
-            if (states[i]) {
-                variable = new OCLFeatureCall(variable, OclKeyWords.NOT);
-            }
-            call = new OCLFeatureCall(call, OclKeyWords.OR, variable);
-        }
-        return call;
+        addConstraint(createNegatedORExpression(declarationArray, state));
     }
     
