Index: /ModelTranslator/resources/testdata/input/ConditionalPromptAndDefaultTest.rsf
===================================================================
--- /ModelTranslator/resources/testdata/input/ConditionalPromptAndDefaultTest.rsf	(revision 407)
+++ /ModelTranslator/resources/testdata/input/ConditionalPromptAndDefaultTest.rsf	(revision 408)
@@ -1,6 +1,6 @@
 Item	VAR1	boolean
-HasPrompts	VAR1	1
 Item	VAR2	boolean
-Prompt	VAR2	VAR1
-HasPrompts	VAR2	1
-Default	VAR2	!VAR1	!VAR1
+Item	VAR3	boolean
+Item	VAR4	boolean
+Prompt	VAR1	VAR2
+Default	VAR1	VAR3	VAR4
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFCondition.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFCondition.java	(revision 407)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFCondition.java	(revision 408)
@@ -56,5 +56,5 @@
      * @return The variable as {@link ConstraintSyntaxTree}.
      */
-    private ConstraintSyntaxTree getVariable(RSFReader reader, String var, String originalVariable) {
+    ConstraintSyntaxTree getVariable(RSFReader reader, String var, String originalVariable) {
         ConstraintSyntaxTree result = null;
         
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDefaultAndPromptCondition.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDefaultAndPromptCondition.java	(revision 408)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDefaultAndPromptCondition.java	(revision 408)
@@ -0,0 +1,182 @@
+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.DebugConstraintTreeVisitor;
+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;
+import de.uni_hildesheim.sse.trans.in.ParserException;
+import de.uni_hildesheim.sse.utils.logger.EASyLoggerFactory;
+import de.uni_hildesheim.sse.utils.logger.EASyLoggerFactory.EASyLogger;
+
+/**
+ * Collects all default values with conditions and all prompt conditions of an
+ * item and then constructs constraints from them.
+ * 
+ * @author Adam Krafczyk
+ */
+class RSFDefaultAndPromptCondition extends RSFCondition {
+    private static final EASyLogger LOGGER = EASyLoggerFactory.INSTANCE.getLogger(
+            RSFDefaultAndPromptCondition.class, "RSFDefaultAndPromptCondition");
+
+    private RSFItem item;
+    private List<String> promptConditions;
+    private List<DefaultValue> defaultValues;
+    
+    /**
+     * Creates a new {@link RSFDefaultAndPromptCondition} for the given item.
+     * @param item The item which Default and Promp conditions will be added.
+     */
+    RSFDefaultAndPromptCondition(RSFItem item) {
+        this.item = item;
+        promptConditions = new ArrayList<String>();
+        defaultValues = new ArrayList<DefaultValue>();
+    }
+    
+    /**
+     * Adds a prompt condition for the given item.
+     * @param condition The condition as read from the .rsf file.
+     */
+    void addPromptCondition(String condition) {
+        promptConditions.add(condition);
+    }
+    
+    /**
+     * Adds a default value with a condition for the item.
+     * @param value The default value as read from the .rsf file.
+     * @param condition The condition as read from the .rsf file.
+     */
+    void addDefaultCondition(String value, String condition) {
+        defaultValues.add(new DefaultValue(value, condition));
+    }
+    
+    @Override
+    List<ConstraintSyntaxTree> toPureBooleanConstraintSyntaxTree(RSFReader reader) throws ParserException {
+        List<ConstraintSyntaxTree> trees = new ArrayList<ConstraintSyntaxTree>();
+        
+        List<ConstraintSyntaxTree> promptConditionTrees = new ArrayList<ConstraintSyntaxTree>();
+        
+        boolean oneAlwaysTrue = false;
+        for (String condition : promptConditions) {
+            ConstraintSyntaxTree conditionTree = getPureBooleanConstraintSyntaxTree(
+                    reader, condition, item.getName());
+            if (conditionTree == null) {
+                oneAlwaysTrue = true;
+                break;
+            }
+            promptConditionTrees.add(conditionTree);
+        }
+        
+        if (!oneAlwaysTrue) {
+            ConstraintSyntaxTree prependCondition = null;
+            if (promptConditionTrees.size() > 0) {
+                prependCondition = promptConditionTrees.get(0);
+                for (int i = 1; i < promptConditionTrees.size(); i++) {
+                    prependCondition = new OCLFeatureCall(
+                            prependCondition, OclKeyWords.OR, promptConditionTrees.get(i));
+                }
+            }
+            
+            
+            for (DefaultValue defaultValue : defaultValues) {
+                ConstraintSyntaxTree condition = getPureBooleanConstraintSyntaxTree(
+                        reader, defaultValue.condition, item.getName());
+                if (condition != null) {
+                    condition = new OCLFeatureCall(condition, OclKeyWords.NOT);
+                }
+                
+                if (defaultValue.value.startsWith("'")) {
+                    // value is constant
+                    ConstraintSyntaxTree tree = null;
+                    switch (item.getDatatype()) {
+                    case HEX:
+                    case INTEGER:
+                    case STRING:
+                        tree = getVariable(
+                                reader, item.getName() + "=" + defaultValue.value, null);
+                        break;
+                    
+                    default:
+                        tree = null;
+                        if (defaultValue.value.equalsIgnoreCase("'y'")) {
+                            tree = getSelectedVariable(item, reader);
+                        } else if (defaultValue.value.equalsIgnoreCase("'n'")) {
+                            tree = getUnselectedVariable(item, reader);
+                        } else {
+                            LOGGER.error("Unkown constant as default value: " + defaultValue.value);
+                            continue;
+                        }
+                        break;
+                    }
+                    
+                    if (condition != null) {
+                        tree = new OCLFeatureCall(tree, OclKeyWords.OR, condition);
+                    }
+                    if (prependCondition != null) {
+                        tree = new OCLFeatureCall(tree, OclKeyWords.OR, prependCondition);
+                    }
+                    trees.add(tree);
+                    
+                } else {
+                    // 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);
+                }
+                
+                
+            }
+        }
+        
+        return trees;
+    }
+
+    @Override
+    ConstraintSyntaxTree toNotBooleanConstraintSyntaxTree(AbstractReader reader, Enum tristate) throws ParserException {
+        // TODO Auto-generated method stub
+        return null;
+    }
+    
+    /**
+     * Stores both, the default value and a the corresponding condition.
+     */
+    private static class DefaultValue {
+        private String value;
+        private String condition;
+        
+        /**
+         * Creates a {@link DefaultValue} with value and conidition as read from
+         * the .rsf file.
+         * @param value The value.
+         * @param condition The condition.
+         */
+        DefaultValue(String value, String condition) {
+            this.value = value;
+            this.condition = condition;
+        }
+    }
+
+}
Index: delTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDefaultCondition.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFDefaultCondition.java	(revision 407)
+++ 	(revision )
@@ -1,159 +1,0 @@
-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.varModel.datatypes.Enum;
-import de.uni_hildesheim.sse.model.varModel.datatypes.OclKeyWords;
-import de.uni_hildesheim.sse.trans.in.AbstractReader;
-import de.uni_hildesheim.sse.trans.in.ParserException;
-
-/**
- * Represents a condition implied by the default value of a variable. Should not be added to the model if
- * the user can modify the variable (i.e. HasPrompt).<br />
- * If the variable is a boolean the pure boolean constraint will look like this:<br />
- * <code>
- * NOT condition OR variable
- * </code><br />
- * (varible will be negated if the default value is "n" instead of "y".<br />
- * If the variable is not a boolean the pure boolean constraint will lokk like:<br />
- * <code>
- * NOT condition OR variable=defaultValue
- * </code><br />
- * If the item has a prompt condition the above expression is combined with OR NOT promptCondition
- * 
- * @author Adam Krafczyk
- */
-class RSFDefaultCondition extends RSFCondition {
-//    private static final EASyLogger LOGGER = EASyLoggerFactory.INSTANCE.getLogger(RSFDefaultCondition.class,
-//            "RSFDefaultCondition");
-
-    private RSFItem variable;
-    private String defaultValue;
-    private String condition;
-    
-    /**
-     * Creates a {@link RSFDefaultCondition} for a Default line read from a .rsf file.
-     * If the variable is boolean only "y" and "n" are allowed as default values.
-     * @param variable The variable with the (possible) default value.
-     * @param defaultValue The default value of the variable.
-     * @param condition The condition that has to be true if the default value has to be set.
-     */
-    RSFDefaultCondition(RSFItem variable, String defaultValue, String condition) {
-        this.variable = variable;
-        this.defaultValue = defaultValue;
-        this.condition = condition;
-    }
-    
-    @Override
-    List<ConstraintSyntaxTree> toPureBooleanConstraintSyntaxTree(RSFReader reader) throws ParserException {
-        List<ConstraintSyntaxTree> defaultVariableConditions = new ArrayList<ConstraintSyntaxTree>();
-        
-        createDefaultConditions(reader, defaultVariableConditions);
-        
-        String promptConditionString = variable.getPromptCondition();
-        ConstraintSyntaxTree promptCondition = null;
-        boolean hasPrompt = false;
-        if (promptConditionString != null) {
-            if (promptConditionString.equals("y") || promptConditionString.equals("'y'")) {
-                hasPrompt = true;
-            } else if (!promptConditionString.equals("n") && !promptConditionString.equals("'n'")) {
-                promptCondition = getPureBooleanConstraintSyntaxTree(reader,
-                        promptConditionString, variable.getName());
-            }
-        }
-        
-        List<ConstraintSyntaxTree> result = new ArrayList<ConstraintSyntaxTree>();
-        
-        /*
-         * prompt OR NOT condition OR defaultVariableConditions
-         */
-        if (!hasPrompt) {
-            
-            ConstraintSyntaxTree condition = getPureBooleanConstraintSyntaxTree(reader, this.condition,
-                    variable.getName());
-            
-            ConstraintSyntaxTree prependCall = null;
-            
-            if (promptCondition != null) {
-                prependCall = promptCondition;
-            }
-            if (condition != null) {
-                if (prependCall == null) {
-                    prependCall = new OCLFeatureCall(condition, OclKeyWords.NOT);
-                } else {
-                    OCLFeatureCall notCondition = new OCLFeatureCall(condition, OclKeyWords.NOT);
-                    prependCall = new OCLFeatureCall(prependCall, OclKeyWords.OR, notCondition);
-                }
-            }
-            
-            for (ConstraintSyntaxTree defaultVariableCondition : defaultVariableConditions) {
-                if (prependCall != null) {
-                    defaultVariableCondition = new OCLFeatureCall(prependCall, OclKeyWords.OR,
-                            defaultVariableCondition);
-                }
-                result.add(defaultVariableCondition);
-            }
-            
-        }
-        
-        return result;
-    }
-
-    /**
-     * Will create a list of conditions for the Default values and adds them to the given list.
-     * Part of the {@link #toPureBooleanConstraintSyntaxTree(RSFReader)}.
-     * @param reader reader The reader to get the variables from.
-     * @param defaultVariableConditions A (empty) list, where to add the created conditions.
-     * @throws ParserException If the conditions contains an operation, that is not supported by the parser.
-     */
-    private void createDefaultConditions(RSFReader reader, List<ConstraintSyntaxTree> defaultVariableConditions)
-        throws ParserException {
-        
-        if (variable.getDatatype().equals(Datatype.BOOLEAN)) {
-            /*
-             * Add (NOT variable OR defaultVariable) AND (varaible or NOT defaultVariable) to the list of conditions
-             */
-            ConstraintSyntaxTree defaultVariable = null;
-            if (defaultValue.equals("y") || defaultValue.equals("'y'")) {
-                defaultVariable = varPool.obtainVariable(reader.getVariable(variable.getName()));
-                
-            } else if (defaultValue.equals("n") || defaultValue.equals("'n'")) {
-                defaultVariable = varPool.obtainVariable(reader.getVariable(variable.getName()));
-                defaultVariable = new OCLFeatureCall(defaultVariable, OclKeyWords.NOT);
-                
-            } else {
-                defaultVariable = getPureBooleanConstraintSyntaxTree(reader, defaultValue, variable.getName());
-                if (defaultVariable == null) {
-                    defaultVariable = varPool.obtainVariable(reader.getVariable(variable.getName()));
-                }
-            }
-            
-            Variable variable = varPool.obtainVariable(reader.getVariable(this.variable.getName()));
-            OCLFeatureCall notVariable = new OCLFeatureCall(variable, OclKeyWords.NOT);
-            OCLFeatureCall notDefaultVariable = new OCLFeatureCall(defaultVariable, OclKeyWords.NOT);
-            
-            defaultVariableConditions.add(new OCLFeatureCall(variable, OclKeyWords.OR, notDefaultVariable));
-            defaultVariableConditions.add(new OCLFeatureCall(notVariable, OclKeyWords.OR, defaultVariable));
-            
-        } else {
-            /*
-             * If not boolean then add string (or integer) comparison directly
-             */
-            defaultValue = defaultValue.replace("'", "");
-            ConstraintSyntaxTree defaultTree = varPool.obtainVariable(reader.getVariable(variable.getName() + "="
-                        + defaultValue));
-            defaultVariableConditions.add(defaultTree);
-        }
-    }
-
-    @Override
-    ConstraintSyntaxTree toNotBooleanConstraintSyntaxTree(AbstractReader reader, Enum tristate) throws ParserException {
-        // TODO Implement
-        return null;
-    }
-
-}
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFItem.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFItem.java	(revision 407)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFItem.java	(revision 408)
@@ -16,8 +16,5 @@
     private Datatype type;
     
-    private boolean hasPrompt;
-    private String promptCondition;
-    
-    private RSFDefaultCondition defaultCondition;
+    private RSFDefaultAndPromptCondition defaultAndPromptCondition;
     
     private List<Variable> comparisonVariables;
@@ -32,4 +29,5 @@
     RSFItem(String name) {
         this.name = name;
+        defaultAndPromptCondition = new RSFDefaultAndPromptCondition(this);
     }
    
@@ -60,49 +58,9 @@
     
     /**
-     * Getter for the HasPrompt attribute of the variable.
-     * @return Whether the variable is changeable by the user.
+     * Getter for the {@link RSFDefaultAndPromptCondition} for this variable.
+     * @return The {@link RSFDefaultAndPromptCondition} of this variable.
      */
-    public boolean hasPrompt() {
-        return hasPrompt;
-    }
-    
-    /**
-     * Setter for the HasPrompt attribute of the variable.
-     * @param hasPrompt Whether the variable is changeable by the user.
-     */
-    public void setHasPrompt(boolean hasPrompt) {
-        this.hasPrompt = hasPrompt;
-    }
-    
-    /**
-     * Getter for the default condition of this variable.
-     * @return The default condition of this variable.
-     */
-    public RSFDefaultCondition getDefaultCondition() {
-        return defaultCondition;
-    }
-    
-    /**
-     * Setter for the default condition of this variable.
-     * @param defaultCondition The default condition for this variable.
-     */
-    public void setDefaultCondition(RSFDefaultCondition defaultCondition) {
-        this.defaultCondition = defaultCondition;
-    }
-    
-    /**
-     * Getter for the condition that toggles the prompt for the variable.
-     * @return The condition; <code>null</code> if not found in the .rsf file.
-     */
-    public String getPromptCondition() {
-        return promptCondition;
-    }
-    
-    /**
-     * Getter for the condition that toggles the prompt for the variable.
-     * @param promptCondition The condition.
-     */
-    public void setPromptCondition(String promptCondition) {
-        this.promptCondition = promptCondition;
+    public RSFDefaultAndPromptCondition getDefaultAndPromptCondition() {
+        return defaultAndPromptCondition;
     }
     
Index: /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFReader.java
===================================================================
--- /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFReader.java	(revision 407)
+++ /ModelTranslator/src/de/uni_hildesheim/sse/trans/in/rsf/RSFReader.java	(revision 408)
@@ -136,13 +136,5 @@
             
             // Add default condition if no prompt
-            if (!item.hasPrompt() || item.getPromptCondition() != null) {
-                RSFDefaultCondition defaultCondition = item.getDefaultCondition();
-                if (defaultCondition != null) {
-                    conditions.add(defaultCondition);
-                } else {
-                    // TODO
-                    LOGGER.warn("No prompt and no default for varible: " + item.getName());
-                }
-            }
+            conditions.add(item.getDefaultAndPromptCondition());
         }
         
@@ -265,14 +257,14 @@
                 case "Prompt":
                     // Condition in [2]
-                    item.setPromptCondition(normalizeString(columns[2]));
+                    item.getDefaultAndPromptCondition().addPromptCondition(normalizeString(columns[2]));
                     break;
                 case "Default":
                     // Default value in [2], condition in [3]
-                    item.setDefaultCondition(
-                        new RSFDefaultCondition(item, normalizeString(columns[2]), normalizeString(columns[3])));
+                    item.getDefaultAndPromptCondition().addDefaultCondition(
+                            normalizeString(columns[2]), normalizeString(columns[3]));
                     break;
                 case "HasPrompts":
                     // 0 or 1 in [2]
-                    item.setHasPrompt(columns[2].equals("1"));
+                    // ignore
                     break;
                 case "ItemSelects":
Index: /ModelTranslator/test/de/uni_hildesheim/sse/trans/scenario/RsfToDimacsTranslationTest.java
===================================================================
--- /ModelTranslator/test/de/uni_hildesheim/sse/trans/scenario/RsfToDimacsTranslationTest.java	(revision 407)
+++ /ModelTranslator/test/de/uni_hildesheim/sse/trans/scenario/RsfToDimacsTranslationTest.java	(revision 408)
@@ -4,5 +4,4 @@
 
 import org.junit.Assert;
-import org.junit.Ignore;
 import org.junit.Test;
 
@@ -224,5 +223,4 @@
      */
     @Test
-    @Ignore("TODO")
     public void testDefaultsAndPrompts() {
         File input = new File(AllTests.INPUT_FOLDER, "testModel_DefaultAndPrompts.rsf");
@@ -234,5 +232,5 @@
         // Translation
         String result = DimacsTestUtils.loadModel(input, noOptimization, true);
-        System.out.println(result);
+        
         int arch32 = DimacsTestUtils.getNumberOfVariable(result, "ARCH=x86");
         int arch64 = DimacsTestUtils.getNumberOfVariable(result, "ARCH=x86_64");
@@ -493,5 +491,4 @@
      * Tests whether a default value becomes true when a prompt disappears.
      */
-    @Ignore("Not finished")
     @Test
     public void testConditionalPromptAndDefault() {
@@ -504,5 +501,14 @@
         // Translation
         String result = DimacsTestUtils.loadModel(input, noOptimization, true);
-        System.out.println(result);
+        
+        int var1 = DimacsTestUtils.getNumberOfVariable(result, "VAR1");
+        int var2 = DimacsTestUtils.getNumberOfVariable(result, "VAR2");
+        int var3 = DimacsTestUtils.getNumberOfVariable(result, "VAR3");
+        int var4 = DimacsTestUtils.getNumberOfVariable(result, "VAR4");
+        
+        Assert.assertTrue("Error: Expected Constraint not included.",
+                DimacsTestUtils.containsConstraint(result, var2, -var4, -var1, var3));
+        Assert.assertTrue("Error: Expected Constraint not included.",
+                DimacsTestUtils.containsConstraint(result, var2, -var4, var1, -var3));
     }
 }
