Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFChoice.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFChoice.java	(revision 396)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFChoice.java	(revision 397)
@@ -6,6 +6,4 @@
 import de.uni_hildesheim.sse.model.cst.ConstraintSyntaxTree;
 import de.uni_hildesheim.sse.model.cst.OCLFeatureCall;
-import de.uni_hildesheim.sse.model.cst.Variable;
-import de.uni_hildesheim.sse.model.cst.VariablePool;
 import de.uni_hildesheim.sse.model.varModel.datatypes.Enum;
 import de.uni_hildesheim.sse.model.varModel.datatypes.OclKeyWords;
@@ -21,6 +19,4 @@
  */
 class RSFChoice extends RSFCondition {
-
-    private static VariablePool varPool = new VariablePool();
     
     private RSFItem choiceItem;
@@ -49,4 +45,5 @@
         List<ConstraintSyntaxTree> trees = new ArrayList<ConstraintSyntaxTree>();
         
+        ConstraintSyntaxTree choiceVar = getSelectedVariable(choiceItem, reader);
         ConstraintSyntaxTree notChoiceVar = getUnselectedVariable(choiceItem, reader);
         
@@ -57,6 +54,5 @@
         // And for each unique combination of choiceItems:
         for (int i = 0; i < choiceItems.size(); i++) {
-            
-            Variable var1 = varPool.obtainVariable(reader.getVariable(choiceItems.get(i).getName()));
+            ConstraintSyntaxTree var1 = getSelectedVariable(choiceItems.get(i), reader);
             ConstraintSyntaxTree notVar1 = getUnselectedVariable(choiceItems.get(i), reader);
             
@@ -71,5 +67,5 @@
             
             // Add choiceVar or not var1 (to make sure that no variables are selected if choiceVar is false)
-            trees.add(new OCLFeatureCall(new OCLFeatureCall(notChoiceVar, OclKeyWords.NOT), OclKeyWords.OR, notVar1));
+            trees.add(new OCLFeatureCall(choiceVar, OclKeyWords.OR, notVar1));
         }
         
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFCondition.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFCondition.java	(revision 396)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFCondition.java	(revision 397)
@@ -319,5 +319,5 @@
      * This method is meant to handle HEX, INTEGER and STRING correctly. It does not handle _MODULE variables of
      * tristates.
-     * @param variable The variable that should be empty.
+     * @param variable The variable that should be not set.
      * @param reader The reader to get varible declarations from.
      * @return A {@link ConstraintSyntaxTree}.
@@ -341,3 +341,30 @@
     }
     
+    /**
+     * Returns a {@link ConstraintSyntaxTree} with the expression that the variable is set.
+     * This method is meant to handle HEX, INTEGER and STRING correctly. It does not handle _MODULE variables of
+     * tristates.
+     * @param variable The variable that should be set.
+     * @param reader The reader to get varible declarations from.
+     * @return A {@link ConstraintSyntaxTree}.
+     */
+    protected ConstraintSyntaxTree getSelectedVariable(RSFItem variable, AbstractReader reader) {
+        ConstraintSyntaxTree var = null;
+        
+        switch (variable.getDatatype()) {
+        case HEX:
+        case INTEGER:
+        case STRING:
+            var = new OCLFeatureCall(varPool.obtainVariable(reader.getVariable(variable.getName() + "=n")),
+                    OclKeyWords.NOT);
+            break;
+        default:
+            DecisionVariableDeclaration varDecl = reader.getVariable(variable.getName());
+            var = varPool.obtainVariable(varDecl);
+            break;
+        }
+        
+        return var;
+    }
+    
 }
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDependsCondition.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDependsCondition.java	(revision 396)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDependsCondition.java	(revision 397)
@@ -83,6 +83,5 @@
                 LOGGER.debug("More than 1 tristate in Depends condition");
             } else if (tristates.size() == 1) {
-                RSFItem item = reader.getItemNoCreate(variable.getName());
-                if (item.getDatatype().equals(Datatype.TRISTATE)) {
+                if (variable.getDatatype().equals(Datatype.TRISTATE)) {
                     DecisionVariableDeclaration moduleVarDecl = reader.getVariable(variable + "_MODULE");
                     Variable moduleVar = varPool.obtainVariable(moduleVarDecl);
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFItemSelectsCondition.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFItemSelectsCondition.java	(revision 396)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFItemSelectsCondition.java	(revision 397)
@@ -6,6 +6,4 @@
 import de.uni_hildesheim.sse.model.cst.ConstraintSyntaxTree;
 import de.uni_hildesheim.sse.model.cst.OCLFeatureCall;
-import de.uni_hildesheim.sse.model.cst.Variable;
-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;
@@ -61,6 +59,5 @@
         ConstraintSyntaxTree notVar = getUnselectedVariable(variable, reader);
         
-        DecisionVariableDeclaration selectedVarDecl = reader.getVariable(selectedVariable);
-        Variable selectedVar = varPool.obtainVariable(selectedVarDecl);
+        ConstraintSyntaxTree selectedVar = getSelectedVariable(reader.getItemNoCreate(selectedVariable), reader);
         
         ConstraintSyntaxTree condition = getPureBooleanConstraintSyntaxTree(reader, this.condition, variable.getName());
