Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFChoice.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFChoice.java	(revision 411)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFChoice.java	(revision 412)
@@ -6,5 +6,4 @@
 import de.uni_hildesheim.sse.model.cst.ConstraintSyntaxTree;
 import de.uni_hildesheim.sse.model.cst.OCLFeatureCall;
-import de.uni_hildesheim.sse.model.varModel.datatypes.Enum;
 import de.uni_hildesheim.sse.model.varModel.datatypes.OclKeyWords;
 import de.uni_hildesheim.sse.trans.in.AbstractReader;
@@ -190,5 +189,5 @@
 
     @Override
-    ConstraintSyntaxTree toNotBooleanConstraintSyntaxTree(AbstractReader reader, Enum tristate) throws ParserException {
+    List<ConstraintSyntaxTree> toNotBooleanConstraintSyntaxTree(AbstractReader reader) {
         // TODO implement
         return null;
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFCondition.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFCondition.java	(revision 411)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFCondition.java	(revision 412)
@@ -40,11 +40,8 @@
      * Returns this condition as a {@link ConstraintSyntaxTree}.
      * @param reader The reader to get the variables from.
-     * @param tristate The Tristate datatype.
-     * @return A {@link ConstraintSyntaxTree} representing this condition. <code>null</code> if condition is optimized
-     *         out.
-     * @throws ParserException If the conditions contains an operation, that is not supported by the parser.
-     */
-    abstract ConstraintSyntaxTree toNotBooleanConstraintSyntaxTree(AbstractReader reader, Enum tristate)
-        throws ParserException;
+     * @return 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.
+     */
+    abstract List<ConstraintSyntaxTree> toNotBooleanConstraintSyntaxTree(AbstractReader reader);
     
     /**
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDefaultAndPromptCondition.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDefaultAndPromptCondition.java	(revision 411)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDefaultAndPromptCondition.java	(revision 412)
@@ -6,5 +6,4 @@
 import de.uni_hildesheim.sse.model.cst.ConstraintSyntaxTree;
 import de.uni_hildesheim.sse.model.cst.OCLFeatureCall;
-import de.uni_hildesheim.sse.model.varModel.datatypes.Enum;
 import de.uni_hildesheim.sse.model.varModel.datatypes.OclKeyWords;
 import de.uni_hildesheim.sse.trans.in.AbstractReader;
@@ -168,6 +167,6 @@
 
     @Override
-    ConstraintSyntaxTree toNotBooleanConstraintSyntaxTree(AbstractReader reader, Enum tristate) throws ParserException {
-        // TODO Auto-generated method stub
+    List<ConstraintSyntaxTree> toNotBooleanConstraintSyntaxTree(AbstractReader reader) {
+        // TODO Implement
         return null;
     }
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDependsCondition.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDependsCondition.java	(revision 411)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDependsCondition.java	(revision 412)
@@ -7,5 +7,4 @@
 import de.uni_hildesheim.sse.model.cst.OCLFeatureCall;
 import de.uni_hildesheim.sse.model.varModel.DecisionVariableDeclaration;
-import de.uni_hildesheim.sse.model.varModel.datatypes.Enum;
 import de.uni_hildesheim.sse.model.varModel.datatypes.OclKeyWords;
 import de.uni_hildesheim.sse.trans.in.AbstractReader;
@@ -120,5 +119,5 @@
     
     @Override
-    ConstraintSyntaxTree toNotBooleanConstraintSyntaxTree(AbstractReader reader, Enum tristate) throws ParserException {
+    List<ConstraintSyntaxTree> toNotBooleanConstraintSyntaxTree(AbstractReader reader) {
         // TODO implement
         return null;
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFItemSelectsCondition.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFItemSelectsCondition.java	(revision 411)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFItemSelectsCondition.java	(revision 412)
@@ -6,5 +6,4 @@
 import de.uni_hildesheim.sse.model.cst.ConstraintSyntaxTree;
 import de.uni_hildesheim.sse.model.cst.OCLFeatureCall;
-import de.uni_hildesheim.sse.model.varModel.datatypes.Enum;
 import de.uni_hildesheim.sse.model.varModel.datatypes.OclKeyWords;
 import de.uni_hildesheim.sse.trans.in.AbstractReader;
@@ -107,5 +106,5 @@
     
     @Override
-    ConstraintSyntaxTree toNotBooleanConstraintSyntaxTree(AbstractReader reader, Enum tristate) throws ParserException {
+    List<ConstraintSyntaxTree> toNotBooleanConstraintSyntaxTree(AbstractReader reader) {
         // TODO implement
         return null;
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFModuleCondition.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFModuleCondition.java	(revision 411)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFModuleCondition.java	(revision 412)
@@ -7,5 +7,4 @@
 import de.uni_hildesheim.sse.model.cst.OCLFeatureCall;
 import de.uni_hildesheim.sse.model.cst.Variable;
-import de.uni_hildesheim.sse.model.varModel.datatypes.Enum;
 import de.uni_hildesheim.sse.model.varModel.datatypes.OclKeyWords;
 import de.uni_hildesheim.sse.trans.in.AbstractReader;
@@ -46,7 +45,7 @@
     
     @Override
-    ConstraintSyntaxTree toNotBooleanConstraintSyntaxTree(AbstractReader reader, Enum tristate) throws ParserException {
-        // Shouldn't be called since there are not separate _MODULE variables in not boolean models
-        return null;
+    List<ConstraintSyntaxTree> toNotBooleanConstraintSyntaxTree(AbstractReader reader) {
+        // No extra conditions needed since we have a tristate
+        return new ArrayList<ConstraintSyntaxTree>();
     }
 
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFReader.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFReader.java	(revision 411)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFReader.java	(revision 412)
@@ -219,18 +219,27 @@
         
         // 3. Add conditions
+        
+        conditions.addAll(dependsConditions.values());
+        conditions.addAll(choices.values());
+        
+        for (RSFChoice choice : choices.values()) {
+            RSFDependsCondition condition = choice.getAdditionalDependsCondition();
+            if (condition != null) {
+                conditions.add(condition);
+            }
+        }
+        
         for (RSFCondition condition : conditions) {
-            try {
+            List<ConstraintSyntaxTree> trees = condition.toNotBooleanConstraintSyntaxTree(this);
+            for (ConstraintSyntaxTree tree : trees) {
                 Constraint constraint = new Constraint(model);
-                ConstraintSyntaxTree tree = condition.toNotBooleanConstraintSyntaxTree(this, tristate);
-                if (tree != null) {
+                try {
                     constraint.setConsSyntax(tree);
                     model.add(constraint);
+                } catch (CSTSemanticException e) {
+                    LOGGER.exception(e);
                 }
-            } catch (CSTSemanticException e) {
-                LOGGER.exception(e);
-            }
-        }
-        
-        // 4. TODO: Add choice conditions
+            }
+        }
     }
 
