Index: /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFChoice.java
===================================================================
--- /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFChoice.java	(revision 134)
+++ /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFChoice.java	(revision 134)
@@ -0,0 +1,79 @@
+package de.uni_hildesheim.sse.trans.in.rsf;
+
+import java.util.ArrayList;
+import java.util.List;
+
+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.OclKeyWords;
+import de.uni_hildesheim.sse.trans.in.AbstractReader;
+
+/**
+ * Contains a Choice and the ChoiceItems.
+ * 
+ * @author Adam Krafczyk
+ */
+class RSFChoice {
+
+    private static VariablePool varPool = new VariablePool();
+    
+    private String choiceName;
+    private List<String> choiceItems;
+    
+    /**
+     * Creates a new Choice with no ChoiceItems.
+     * @param choiceName The name of the Choice.
+     */
+    RSFChoice(String choiceName) {
+        this.choiceName = choiceName;
+        choiceItems = new ArrayList<String>();
+    }
+    
+    /**
+     * Adds a ChoiceItem to the Choice.
+     * @param name The name of the ChoiceItem.
+     */
+    void addChoiceItem(String name) {
+        choiceItems.add(name);
+    }
+    
+    /**
+     * Creates a {@link ConstraintSyntaxTree}s to assure that only one ChoiceItem is selected.
+     * @param reader A reader to get variable declarations from.
+     * @return An array of {@link ConstraintSyntaxTree}s.
+     */
+    ConstraintSyntaxTree[] getBooleanConstraintSyntaxTree(AbstractReader reader) {
+        // Create choiceItems.size() Constraints with all choiceItems OR'd together and 1 negated each.
+        ConstraintSyntaxTree[] trees = new ConstraintSyntaxTree[choiceItems.size()];
+        
+        for (int i = 0; i < trees.length; i++) {
+            
+            for (int j = 0; j < choiceItems.size(); j++) {
+                Variable var = varPool.obtainVariable(reader.getVariable(choiceItems.get(i)));
+                // variable #i should be negated
+                if (j == i) {
+                    if (trees[i] == null) {
+                        trees[i] = new OCLFeatureCall(var, OclKeyWords.NOT);
+                    } else {
+                        trees[i] = new OCLFeatureCall(trees[i], OclKeyWords.OR,
+                                new OCLFeatureCall(var, OclKeyWords.NOT));
+                    }
+                } else {
+                    if (trees[i] == null) {
+                        trees[i] = var;
+                    } else {
+                        trees[i] = new OCLFeatureCall(trees[i], OclKeyWords.OR, var);
+                    }
+                }
+            }
+            
+        }
+        
+        // TODO only if choice is true
+        
+        return trees;
+    }
+    
+}
Index: /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFReader.java
===================================================================
--- /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFReader.java	(revision 133)
+++ /Code/ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFReader.java	(revision 134)
@@ -6,4 +6,5 @@
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -38,4 +39,5 @@
     private Map<String, RSFItem> items;
     private List<RSFCondition> conditions;
+    private Map<String, RSFChoice> choices;
 
     /**
@@ -64,4 +66,5 @@
         items = new LinkedHashMap<String, RSFItem>();
         conditions = new ArrayList<RSFCondition>();
+        choices = new HashMap<String, RSFChoice>();
     }
     
@@ -108,5 +111,5 @@
      */
     private void createPureBooleanModel(Project model) throws ParserException {
-        // Add variables
+        // 1. Add variables
         for (RSFItem item : items.values()) {
             switch(item.getDatatype()) {
@@ -130,5 +133,5 @@
         }
         
-        // Add conditions
+        // 2. Add conditions
         for (RSFCondition condition : conditions) {
             try {
@@ -141,4 +144,18 @@
             } catch (CSTSemanticException e) {
                 LOGGER.exception(e);
+            }
+        }
+        
+        // 3. Add choice conditions
+        for (RSFChoice choice : choices.values()) {
+            ConstraintSyntaxTree[] trees = choice.getBooleanConstraintSyntaxTree(this);
+            for (ConstraintSyntaxTree tree : trees) {
+                Constraint constraint = new Constraint(model);
+                try {
+                    constraint.setConsSyntax(tree);
+                    model.add(constraint);
+                } catch (CSTSemanticException e) {
+                    LOGGER.exception(e);
+                }
             }
         }
@@ -236,9 +253,22 @@
                     break;
                 case "Choice":
-                    // TODO Check whether this is correct
-                    item.setDatatype("boolean");
+                    // importance (?) in [2], datatype in [3]
+                    item.setDatatype(columns[3]);
+                    if (choices.get(itemName) == null) {
+                        choices.put(itemName, new RSFChoice(itemName));
+                    } else {
+                        LOGGER.debug("Double decleratation of choice");
+                        // TODO
+                    }
                     break;
                 case "ChoiceItem":
                     // related choice in [2]
+                    RSFChoice choice = choices.get(columns[2]);
+                    if (choice != null) {
+                        choice.addChoiceItem(itemName);
+                    } else {
+                        LOGGER.debug("Missing choice declaration for ChoiceItem");
+                        // TODO
+                    }
                     break;
                 case "Range":
