Index: /ModelTranslator/resources/scripts/dimacsExample.bat
===================================================================
--- /ModelTranslator/resources/scripts/dimacsExample.bat	(revision 429)
+++ /ModelTranslator/resources/scripts/dimacsExample.bat	(revision 430)
@@ -1,2 +1,2 @@
 @echo off
-java -Dde.uni_hildesheim.sse.easy.logging.level=INFO -Dde.uni_hildesheim.sse.easy.logging.file="TranslationLog.txt" -Xms1175m -Xmx1175m -jar ModelTranslator.jar -in input/Linux.tsv -out output/Linux_x86_2.6.33.3.dimacs -optAll -v 2.6.33.3 -comment "X86 translation of Linux 2.6.33.3 using KConfigReader"
+java -Dde.uni_hildesheim.sse.easy.logging.level=INFO -Dde.uni_hildesheim.sse.easy.logging.file="TranslationLog.txt" -Xms4000m -Xmx4000m -jar ModelTranslator.jar -in input/Linux.tsv -out output/Linux_x86_2.6.33.3.dimacs -optAll -v 2.6.33.3 -comment "X86 translation of Linux 2.6.33.3 using KConfigReader"
Index: /ModelTranslator/resources/scripts/dimacsExample.sh
===================================================================
--- /ModelTranslator/resources/scripts/dimacsExample.sh	(revision 429)
+++ /ModelTranslator/resources/scripts/dimacsExample.sh	(revision 430)
@@ -2,5 +2,5 @@
 #Qsub parameters
 #$ -cwd
-#$ -l mem=10000m
+#$ -l mem=6000m
 #$ -q all.q,fast.q,acogpr.q
 #$ -N DIMACS_Translation
@@ -8,3 +8,3 @@
 #
 #
-java -Dde.uni_hildesheim.sse.easy.logging.level=INFO -Dde.uni_hildesheim.sse.easy.logging.file="TranslationLog.txt" -Xms8000m -Xmx8000m -XX:ParallelGCThreads=1 -XX:ConcGCThreads=1 -jar ModelTranslator.jar -in input/Linux.tsv -out output/Linux_x86_2.6.33.3.dimacs -optAll -v 2.6.33.3 -comment "X86 translation of Linux 2.6.33.3 using KConfigReader"
+java -Dde.uni_hildesheim.sse.easy.logging.level=INFO -Dde.uni_hildesheim.sse.easy.logging.file="TranslationLog.txt" -Xms4000m -Xmx4000m -XX:ParallelGCThreads=1 -XX:ConcGCThreads=1 -jar ModelTranslator.jar -in input/Linux.tsv -out output/Linux_x86_2.6.33.3.dimacs -optAll -v 2.6.33.3 -comment "X86 translation of Linux 2.6.33.3 using KConfigReader"
Index: /ModelTranslator/resources/scripts/ivmlExample.sh
===================================================================
--- /ModelTranslator/resources/scripts/ivmlExample.sh	(revision 429)
+++ /ModelTranslator/resources/scripts/ivmlExample.sh	(revision 430)
@@ -2,5 +2,5 @@
 #Qsub parameters
 #$ -cwd
-#$ -l mem=10000m
+#$ -l mem=6000m
 #$ -q all.q,fast.q,acogpr.q
 #$ -N IVML_Translation
@@ -8,3 +8,3 @@
 #
 #
-java -Dde.uni_hildesheim.sse.easy.logging.level=INFO -Dde.uni_hildesheim.sse.easy.logging.file="TranslationLog.txt" -Xms8000m -Xmx8000m -XX:ParallelGCThreads=1 -XX:ConcGCThreads=1 -jar ModelTranslator.jar -in input/model.model -out output/Linux_x86_2.6.33.3.ivml -v 2.6.33.3 -comment "X86 translation of Linux 2.6.33.3 using KConfigReader"
+java -Dde.uni_hildesheim.sse.easy.logging.level=INFO -Dde.uni_hildesheim.sse.easy.logging.file="TranslationLog.txt" -Xms4000m -Xmx4000m -XX:ParallelGCThreads=1 -XX:ConcGCThreads=1 -jar ModelTranslator.jar -in input/model.model -out output/Linux_x86_2.6.33.3.ivml -v 2.6.33.3 -comment "X86 translation of Linux 2.6.33.3 using KConfigReader"
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/cli/ArgumentsParser.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/cli/ArgumentsParser.java	(revision 429)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/cli/ArgumentsParser.java	(revision 430)
@@ -11,6 +11,4 @@
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
-
-import de.uni_hildesheim.sse.model.varModel.IvmlKeyWords;
 
 /**
@@ -54,5 +52,5 @@
             + "Will remove duplicated constraints.");
         OPTIONS.addOption(CMD_OPTIMIZATION_CONSTANTS, CMD_OPTIMIZATION_CONSTANTS, false, "Optional:"
-            + "Will remove constant \"variables\" (which are set to true or false permanetely).");
+            + "Will remove constant \"variables\" (which are set to true or false permanently).");
     }
     
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/ModelReader.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/ModelReader.java	(revision 429)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/ModelReader.java	(revision 430)
@@ -24,4 +24,5 @@
 import de.uni_hildesheim.sse.model.varModel.datatypes.BooleanType;
 import de.uni_hildesheim.sse.model.varModel.datatypes.OclKeyWords;
+import de.uni_hildesheim.sse.trans.Main;
 import de.uni_hildesheim.sse.trans.convert.OptimizationParameter;
 import de.uni_hildesheim.sse.utils.logger.EASyLoggerFactory;
@@ -36,5 +37,5 @@
  */
 public class ModelReader implements IModelReader {
-    private static final EASyLogger LOGGER = EASyLoggerFactory.INSTANCE.getLogger(ModelReader.class, "ModelReader");
+    private static final EASyLogger LOGGER = EASyLoggerFactory.INSTANCE.getLogger(ModelReader.class, Main.ID);
     
     private BufferedReader reader;
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFChoice.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFChoice.java	(revision 429)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFChoice.java	(revision 430)
@@ -7,4 +7,5 @@
 import de.uni_hildesheim.sse.model.cst.OCLFeatureCall;
 import de.uni_hildesheim.sse.model.varModel.datatypes.OclKeyWords;
+import de.uni_hildesheim.sse.trans.Main;
 import de.uni_hildesheim.sse.trans.in.ParserException;
 import de.uni_hildesheim.sse.utils.logger.EASyLoggerFactory;
@@ -19,5 +20,5 @@
  */
 class RSFChoice extends RSFCondition {
-    private static final EASyLogger LOGGER = EASyLoggerFactory.INSTANCE.getLogger(RSFChoice.class, "RSFChoice");
+    private static final EASyLogger LOGGER = EASyLoggerFactory.INSTANCE.getLogger(RSFChoice.class, Main.ID);
     
     private RSFItem choiceItem;
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFCondition.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFCondition.java	(revision 429)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFCondition.java	(revision 430)
@@ -10,4 +10,5 @@
 import de.uni_hildesheim.sse.model.varModel.DecisionVariableDeclaration;
 import de.uni_hildesheim.sse.model.varModel.datatypes.OclKeyWords;
+import de.uni_hildesheim.sse.trans.Main;
 import de.uni_hildesheim.sse.trans.in.ParserException;
 import de.uni_hildesheim.sse.trans.in.ParserException.ParserExceptionType;
@@ -23,6 +24,5 @@
     protected static VariablePool varPool = new VariablePool();
     
-    private static final EASyLogger LOGGER = EASyLoggerFactory.INSTANCE.getLogger(RSFCondition.class,
-          "RSFCondition");
+    private static final EASyLogger LOGGER = EASyLoggerFactory.INSTANCE.getLogger(RSFCondition.class, Main.ID);
     
     /**
@@ -53,4 +53,12 @@
     ConstraintSyntaxTree getVariable(RSFReader reader, String var, String originalVariable) {
         ConstraintSyntaxTree result = null;
+        
+        // Remove parenthesis around variable names
+        if (var.startsWith("(")) {
+            var = var.substring(1);
+            if (var.endsWith(")")) {
+                var = var.substring(0, var.length() - 1);
+            }
+        }
         
         if (var.startsWith("!")) {
@@ -216,5 +224,5 @@
      */
     protected ConstraintSyntaxTree getPureBooleanConstraintSyntaxTree(RSFReader reader, String condition,
-            String variable) throws ParserException {
+        String variable) throws ParserException {
         
         condition = condition.replace(" ", "");
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDefaultAndPromptCondition.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDefaultAndPromptCondition.java	(revision 429)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDefaultAndPromptCondition.java	(revision 430)
@@ -7,4 +7,5 @@
 import de.uni_hildesheim.sse.model.cst.OCLFeatureCall;
 import de.uni_hildesheim.sse.model.varModel.datatypes.OclKeyWords;
+import de.uni_hildesheim.sse.trans.Main;
 import de.uni_hildesheim.sse.trans.in.ParserException;
 import de.uni_hildesheim.sse.utils.logger.EASyLoggerFactory;
@@ -22,5 +23,5 @@
 class RSFDefaultAndPromptCondition extends RSFCondition {
     private static final EASyLogger LOGGER = EASyLoggerFactory.INSTANCE.getLogger(
-            RSFDefaultAndPromptCondition.class, "RSFDefaultAndPromptCondition");
+        RSFDefaultAndPromptCondition.class, Main.ID);
 
     private RSFItem item;
@@ -78,5 +79,5 @@
                 for (int i = 1; i < promptConditionTrees.size(); i++) {
                     prependCondition = new OCLFeatureCall(
-                            prependCondition, OclKeyWords.OR, promptConditionTrees.get(i));
+                        prependCondition, OclKeyWords.OR, promptConditionTrees.get(i));
                 }
             }
@@ -139,32 +140,46 @@
                 if (!wasConstant) {
                     // value is constraint
-                    ConstraintSyntaxTree valueConstraint =
-                            getPureBooleanConstraintSyntaxTree(reader, defaultValue.value, item.getName());
-                    ConstraintSyntaxTree notValueConstraint = new OCLFeatureCall(valueConstraint, OclKeyWords.NOT);
-                    
-                    ConstraintSyntaxTree var = getSelectedVariable(item, reader);
-                    ConstraintSyntaxTree notvar = getUnselectedVariable(item, reader);
-                    
-                    ConstraintSyntaxTree tree1 = new OCLFeatureCall(notvar, OclKeyWords.OR, valueConstraint);
-                    ConstraintSyntaxTree tree2 = new OCLFeatureCall(var, OclKeyWords.OR, notValueConstraint);
-                    
-                    if (condition != null) {
-                        tree1 = new OCLFeatureCall(tree1, OclKeyWords.OR, condition);
-                        tree2 = new OCLFeatureCall(tree2, OclKeyWords.OR, condition);
-                    }
-                    if (prependCondition != null) {
-                        tree1 = new OCLFeatureCall(tree1, OclKeyWords.OR, prependCondition);
-                        tree2 = new OCLFeatureCall(tree2, OclKeyWords.OR, prependCondition);
-                    }
-                    
-                    trees.add(tree1);
-                    trees.add(tree2);
-                }
-                
-                
+                    addConstraint(reader, trees, prependCondition, defaultValue, condition);
+                }
             }
         }
-        
         return trees;
+    }
+
+    /**
+     * Adds a non constant constraint.
+     * @param reader The currently used {@link RSFReader} (information source).
+     * @param trees A List of {@link ConstraintSyntaxTree}s representing this expression. The parts should be handled
+     *     as if combined with AND. empty if expression is optimized out.
+     * @param prependCondition An optional pre-condition.
+     * @param defaultValue The default value of a current variable.
+     * @param condition An optional condition.
+     * @throws ParserException If the conditions contains an operation, that is not supported by the parser.
+     */
+    private void addConstraint(RSFReader reader, List<ConstraintSyntaxTree> trees,
+        ConstraintSyntaxTree prependCondition, DefaultValue defaultValue, ConstraintSyntaxTree condition)
+        throws ParserException {
+        
+        ConstraintSyntaxTree valueConstraint =
+            getPureBooleanConstraintSyntaxTree(reader, defaultValue.value, item.getName());
+        ConstraintSyntaxTree notValueConstraint = new OCLFeatureCall(valueConstraint, OclKeyWords.NOT);
+        
+        ConstraintSyntaxTree var = getSelectedVariable(item, reader);
+        ConstraintSyntaxTree notvar = getUnselectedVariable(item, reader);
+        
+        ConstraintSyntaxTree tree1 = new OCLFeatureCall(notvar, OclKeyWords.OR, valueConstraint);
+        ConstraintSyntaxTree tree2 = new OCLFeatureCall(var, OclKeyWords.OR, notValueConstraint);
+        
+        if (condition != null) {
+            tree1 = new OCLFeatureCall(tree1, OclKeyWords.OR, condition);
+            tree2 = new OCLFeatureCall(tree2, OclKeyWords.OR, condition);
+        }
+        if (prependCondition != null) {
+            tree1 = new OCLFeatureCall(tree1, OclKeyWords.OR, prependCondition);
+            tree2 = new OCLFeatureCall(tree2, OclKeyWords.OR, prependCondition);
+        }
+        
+        trees.add(tree1);
+        trees.add(tree2);
     }
 
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDependsCondition.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDependsCondition.java	(revision 429)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDependsCondition.java	(revision 430)
@@ -4,5 +4,4 @@
 import java.util.List;
 
-import de.uni_hildesheim.sse.model.cst.ConstantValue;
 import de.uni_hildesheim.sse.model.cst.ConstraintSyntaxTree;
 import de.uni_hildesheim.sse.model.cst.OCLFeatureCall;
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFReader.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFReader.java	(revision 429)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFReader.java	(revision 430)
@@ -26,4 +26,5 @@
 import de.uni_hildesheim.sse.model.varModel.values.ValueDoesNotMatchTypeException;
 import de.uni_hildesheim.sse.model.varModel.values.ValueFactory;
+import de.uni_hildesheim.sse.trans.Main;
 import de.uni_hildesheim.sse.trans.in.AbstractReader;
 import de.uni_hildesheim.sse.trans.in.ParserException;
@@ -71,5 +72,5 @@
     }
     
-    private static final EASyLogger LOGGER = EASyLoggerFactory.INSTANCE.getLogger(RSFReader.class, "RSFReader");
+    private static final EASyLogger LOGGER = EASyLoggerFactory.INSTANCE.getLogger(RSFReader.class, Main.ID);
     
     private Map<String, RSFItem> items;
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/out/DimacsWriter.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/out/DimacsWriter.java	(revision 429)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/out/DimacsWriter.java	(revision 430)
@@ -37,9 +37,9 @@
         + "c VAR VAR_MODULE Meaning\r\n"
         + "c  0       0     VAR is disabled (selection is 'n')\r\n"
-        + "c  1       0     VAR is permanetely selected (selection is 'y')\r\n"
+        + "c  1       0     VAR is permanently selected (selection is 'y')\r\n"
         + "c  0       1     VAR is selected as module (selection is 'm')\r\n"
         + "c  1       1     Illegal state\r\n"
         + "c As a consequence, if KConfig specifies that a tristate variable shall be selected\r\n"
-        + "c (permanetely or as a module), only the VAR variable has to be checked.\r\n\r\n"
+        + "c (permanently or as a module), only the VAR variable has to be checked.\r\n\r\n"
         // String, Integer, Hex
         + "c Explanation of String, Integer, and Hex variables:\r\n"
