Index: trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/metrics/NoLetterOrDigitRatioMetric.java
===================================================================
--- trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/metrics/NoLetterOrDigitRatioMetric.java	(revision 1199)
+++ trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/metrics/NoLetterOrDigitRatioMetric.java	(revision 1217)
@@ -15,7 +15,7 @@
 package de.ugoe.cs.autoquest.usability.rules.metrics;
 
-import static de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter.TEXT_INPUT;
+import static de.ugoe.cs.autoquest.usability.taskmodel.filter.types.EventTypeFilter.TEXT_INPUT;
 import static de.ugoe.cs.autoquest.usability.util.TextInputUtil.aggregateEnteredTextFromTextInputs;
-import static de.ugoe.cs.autoquest.usability.util.TextInputUtil.characterIsLetterOrDigitPredicate;
+import static de.ugoe.cs.autoquest.usability.util.TextInputUtil.characterIsNoLetterOrDigitPredicate;
 
 import java.util.List;
@@ -28,15 +28,16 @@
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel;
 import de.ugoe.cs.autoquest.usability.EvaluationMethodCaller;
-import de.ugoe.cs.autoquest.usability.result.DefectDescriptionResolver;
-import de.ugoe.cs.autoquest.usability.result.UsabilityDefect;
+import de.ugoe.cs.autoquest.usability.result.UsabilityProblemDescriptionResolver;
+import de.ugoe.cs.autoquest.usability.result.UsabilityProblemDescription;
 import de.ugoe.cs.autoquest.usability.rules.UsabilityMetric;
 import de.ugoe.cs.autoquest.usability.rules.UsabilityRule;
-import de.ugoe.cs.autoquest.usability.tasktree.FilterResult;
-import de.ugoe.cs.autoquest.usability.tasktree.IterativeDFSFilterStrategy;
-import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskModelFilter;
+import de.ugoe.cs.autoquest.usability.taskmodel.filter.FilterResult;
+import de.ugoe.cs.autoquest.usability.taskmodel.filter.IterativeDFSFilterStrategy;
+import de.ugoe.cs.autoquest.usability.taskmodel.filter.types.TaskModelFilter;
 
 /**
  * <p>
- * TODO comment
+ * Metric, which calculates the ratio ratio between non letter or digit characters and all entered
+ * characters.
  * </p>
  * 
@@ -47,33 +48,54 @@
     /**
      * <p>
-     * TODO: comment
+     * Constructor. Creates a new {@code NoLetterOrDigitRatioMetric} for a given task model.
      * </p>
-     *
-     * @param taskTree
+     * 
+     * @param taskModel
      */
     public NoLetterOrDigitRatioMetric(ITaskModel taskModel) {
         super(taskModel);
         this.name = "NoLetterOrDigitRatio";
-        this.defect = new DefectDescriptionResolver().descriptionFor(this.getClass().getSimpleName());
+        this.defect =
+            new UsabilityProblemDescriptionResolver().descriptionFor(this.getClass()
+                .getSimpleName());
     }
 
-    /* (non-Javadoc)
+    /*
+     * (non-Javadoc)
+     * 
      * @see de.ugoe.cs.autoquest.usability.rules.UsabilityRule#check()
      */
     @Override
-    public Optional<UsabilityDefect> calculate() {
+    public Optional<UsabilityProblemDescription> calculate() {
         FilterResult textInputEvents = extractNodesFromTaskTree();
         float evaluationMetric = calculateEvaluationMetric(textInputEvents.tasksMatchedFilter());
         return this.defect.isPresent(evaluationMetric);
     }
-    
+
+    /**
+     * 
+     * <p>
+     * Filters all text input events from task model.
+     * </p>
+     * 
+     * @return {@code FilterResult}
+     */
     private FilterResult extractNodesFromTaskTree() {
         return new TaskModelFilter(new IterativeDFSFilterStrategy()).filterByEventType(TEXT_INPUT)
             .from(this.taskModel);
     }
-    
+
+    /**
+     * 
+     * <p>
+     * Calculates the metric.
+     * </p>
+     * 
+     * @param textInputEvents
+     *            all text input events
+     * @return ratio between non letter or digit characters and all entered characters
+     */
     private float calculateEvaluationMetric(List<ITask> textInputEvents) {
-        Multiset<String> enteredTextFragments =
-            aggregateEnteredTextFromTextInputs(textInputEvents);
+        Multiset<String> enteredTextFragments = aggregateEnteredTextFromTextInputs(textInputEvents);
         int allCharactersCount = 0;
         int noLetterOrDigitCount = 0;
@@ -82,6 +104,6 @@
             allCharactersCount += CharMatcher.ANY.countIn(textFragment) * occurencesOfTextFragment;
             noLetterOrDigitCount +=
-                CharMatcher.forPredicate(characterIsLetterOrDigitPredicate()).countIn(textFragment) *
-                    occurencesOfTextFragment;
+                CharMatcher.forPredicate(characterIsNoLetterOrDigitPredicate())
+                    .countIn(textFragment) * occurencesOfTextFragment;
         }
         return allCharactersCount != 0 ? (float) noLetterOrDigitCount / (float) allCharactersCount
@@ -89,9 +111,13 @@
     }
 
-    /* (non-Javadoc)
-     * @see de.ugoe.cs.autoquest.usability.rules.UsabilityRule#callEvaluationMetho(de.ugoe.cs.autoquest.usability.EvaluationMethodCaller)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * de.ugoe.cs.autoquest.usability.rules.UsabilityRule#callEvaluationMetho(de.ugoe.cs.autoquest
+     * .usability.EvaluationMethodCaller)
      */
     @Override
-    public Optional<UsabilityDefect> callEvaluationMethod(EvaluationMethodCaller evaluationMethodCaller)
+    public Optional<UsabilityProblemDescription> callEvaluationMethod(EvaluationMethodCaller evaluationMethodCaller)
     {
         return evaluationMethodCaller.check(this);
Index: trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/metrics/TextInputEntryRepetitionsMetric.java
===================================================================
--- trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/metrics/TextInputEntryRepetitionsMetric.java	(revision 1199)
+++ trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/metrics/TextInputEntryRepetitionsMetric.java	(revision 1217)
@@ -15,5 +15,5 @@
 package de.ugoe.cs.autoquest.usability.rules.metrics;
 
-import static de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter.TEXT_INPUT;
+import static de.ugoe.cs.autoquest.usability.taskmodel.filter.types.EventTypeFilter.TEXT_INPUT;
 import static de.ugoe.cs.autoquest.usability.util.TextInputUtil.aggregateEnteredTextFromTextInputs;
 
@@ -28,15 +28,16 @@
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel;
 import de.ugoe.cs.autoquest.usability.EvaluationMethodCaller;
-import de.ugoe.cs.autoquest.usability.result.DefectDescriptionResolver;
-import de.ugoe.cs.autoquest.usability.result.UsabilityDefect;
+import de.ugoe.cs.autoquest.usability.result.UsabilityProblemDescriptionResolver;
+import de.ugoe.cs.autoquest.usability.result.UsabilityProblemDescription;
 import de.ugoe.cs.autoquest.usability.rules.UsabilityMetric;
 import de.ugoe.cs.autoquest.usability.rules.UsabilityRule;
-import de.ugoe.cs.autoquest.usability.tasktree.FilterResult;
-import de.ugoe.cs.autoquest.usability.tasktree.IterativeDFSFilterStrategy;
-import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskModelFilter;
+import de.ugoe.cs.autoquest.usability.taskmodel.filter.FilterResult;
+import de.ugoe.cs.autoquest.usability.taskmodel.filter.IterativeDFSFilterStrategy;
+import de.ugoe.cs.autoquest.usability.taskmodel.filter.types.TaskModelFilter;
 
 /**
  * <p>
- * TODO comment
+ * Metric, which measures either the repetition of entered words or the maximum repetition of a
+ * single word.
  * </p>
  * 
@@ -47,33 +48,54 @@
     /**
      * <p>
-     * TODO: comment
+     * Constructor. Creates a new {@link TextInputEntryRepetitionsMetric} for a given task model.
      * </p>
-     *
-     * @param taskTree
+     * 
+     * @param taskModel
      */
     public TextInputEntryRepetitionsMetric(ITaskModel taskModel) {
         super(taskModel);
         this.name = "TextInputEntryRepetitions";
-        this.defect = new DefectDescriptionResolver().descriptionFor(this.getClass().getSimpleName());
+        this.defect =
+            new UsabilityProblemDescriptionResolver().descriptionFor(this.getClass()
+                .getSimpleName());
     }
 
-    /* (non-Javadoc)
+    /*
+     * (non-Javadoc)
+     * 
      * @see de.ugoe.cs.autoquest.usability.rules.UsabilityRule#check()
      */
     @Override
-    public Optional<UsabilityDefect> calculate() {
+    public Optional<UsabilityProblemDescription> calculate() {
         FilterResult textInputEvents = extractNodesFromTaskTree();
         float evaluationMetric = calculateEvaluationMetric(textInputEvents.tasksMatchedFilter());
         return this.defect.isPresent(evaluationMetric);
     }
-    
+
+    /**
+     * 
+     * <p>
+     * Filters all text input events from task model.
+     * </p>
+     * 
+     * @return {@code FilterResult}
+     */
     private FilterResult extractNodesFromTaskTree() {
         return new TaskModelFilter(new IterativeDFSFilterStrategy()).filterByEventType(TEXT_INPUT)
             .from(this.taskModel);
     }
-    
+
+    /**
+     * 
+     * <p>
+     * Calculates the metric.
+     * </p>
+     * 
+     * @param textInputEvents
+     *            all text input events
+     * @return either number of repeated words or the number of repetitions of the most entered word
+     */
     private float calculateEvaluationMetric(List<ITask> textInputEvents) {
-        Multiset<String> enteredTextFragments =
-            aggregateEnteredTextFromTextInputs(textInputEvents);
+        Multiset<String> enteredTextFragments = aggregateEnteredTextFromTextInputs(textInputEvents);
         Multiset<String> orderedTextFragmentsWithMultipleOccurences =
             onlyTextFragmentsWithMultipleOccurences(enteredTextFragments);
@@ -86,7 +108,17 @@
             orderedTextFragmentsWithMultipleOccurences
                 .count(wordWithHighestRepetitionInTextFragments);
-        return Math.max(numberOfRepeatedWords, maxRepetitions-1);
+        return Math.max(numberOfRepeatedWords, maxRepetitions - 1);
     }
-    
+
+    /**
+     * 
+     * <p>
+     * Return only words, which at least entered twice.
+     * </p>
+     * 
+     * @param allTextInputs
+     *            all text input events
+     * @return all word, which used min. twice
+     */
     private Multiset<String> onlyTextFragmentsWithMultipleOccurences(final Multiset<String> allTextInputs)
     {
@@ -104,12 +136,16 @@
     }
 
-    /* (non-Javadoc)
-     * @see de.ugoe.cs.autoquest.usability.rules.UsabilityRule#callEvaluationMetho(de.ugoe.cs.autoquest.usability.EvaluationMethodCaller)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * de.ugoe.cs.autoquest.usability.rules.UsabilityRule#callEvaluationMetho(de.ugoe.cs.autoquest
+     * .usability.EvaluationMethodCaller)
      */
     @Override
-    public Optional<UsabilityDefect> callEvaluationMethod(EvaluationMethodCaller evaluationMethodCaller)
+    public Optional<UsabilityProblemDescription> callEvaluationMethod(EvaluationMethodCaller evaluationMethodCaller)
     {
         return evaluationMethodCaller.check(this);
     }
-    
+
 }
Index: trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/metrics/TextInputRatioMetric.java
===================================================================
--- trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/metrics/TextInputRatioMetric.java	(revision 1199)
+++ trunk/autoquest-core-usability-evaluation/src/main/java/de/ugoe/cs/autoquest/usability/rules/metrics/TextInputRatioMetric.java	(revision 1217)
@@ -15,5 +15,5 @@
 package de.ugoe.cs.autoquest.usability.rules.metrics;
 
-import static de.ugoe.cs.autoquest.usability.tasktree.filters.EventTypeFilter.TEXT_INPUT;
+import static de.ugoe.cs.autoquest.usability.taskmodel.filter.types.EventTypeFilter.TEXT_INPUT;
 
 import java.util.List;
@@ -27,15 +27,15 @@
 import de.ugoe.cs.autoquest.tasktrees.treeifc.ITaskModel;
 import de.ugoe.cs.autoquest.usability.EvaluationMethodCaller;
-import de.ugoe.cs.autoquest.usability.result.DefectDescriptionResolver;
-import de.ugoe.cs.autoquest.usability.result.UsabilityDefect;
+import de.ugoe.cs.autoquest.usability.result.UsabilityProblemDescriptionResolver;
+import de.ugoe.cs.autoquest.usability.result.UsabilityProblemDescription;
 import de.ugoe.cs.autoquest.usability.rules.UsabilityMetric;
 import de.ugoe.cs.autoquest.usability.rules.UsabilityRule;
-import de.ugoe.cs.autoquest.usability.tasktree.FilterResult;
-import de.ugoe.cs.autoquest.usability.tasktree.IterativeDFSFilterStrategy;
-import de.ugoe.cs.autoquest.usability.tasktree.filters.TaskModelFilter;
+import de.ugoe.cs.autoquest.usability.taskmodel.filter.FilterResult;
+import de.ugoe.cs.autoquest.usability.taskmodel.filter.IterativeDFSFilterStrategy;
+import de.ugoe.cs.autoquest.usability.taskmodel.filter.types.TaskModelFilter;
 
 /**
  * <p>
- * TODO comment
+ * Metric, which measures the ratio between the text input and the non text input events.
  * </p>
  * 
@@ -46,7 +46,7 @@
     /**
      * <p>
-     * TODO: comment
+     * Constructor. Creates a new {@code TextInputRatioMetric} for a given task model.
      * </p>
-     *
+     * 
      * @param taskTree
      */
@@ -54,23 +54,51 @@
         super(taskModel);
         this.name = "TextInputRatio";
-        this.defect = new DefectDescriptionResolver().descriptionFor(this.getClass().getSimpleName());
+        this.defect =
+            new UsabilityProblemDescriptionResolver().descriptionFor(this.getClass()
+                .getSimpleName());
     }
 
-    /* (non-Javadoc)
+    /*
+     * (non-Javadoc)
+     * 
      * @see de.ugoe.cs.autoquest.usability.rules.UsabilityRule#check()
      */
     @Override
-    public Optional<UsabilityDefect> calculate() {
+    public Optional<UsabilityProblemDescription> calculate() {
         FilterResult textInputEvents = extractNodesFromTaskTree();
-        float evaluationMetric = calculateEvaluationMetric(textInputEvents.tasksMatchedFilter(), textInputEvents.tasksNotMatchedFilter());
+        float evaluationMetric =
+            calculateEvaluationMetric(textInputEvents.tasksMatchedFilter(),
+                                      textInputEvents.tasksNotMatchedFilter());
         return this.defect.isPresent(evaluationMetric);
     }
-    
+
+    /**
+     * 
+     * <p>
+     * Filters all text input events from task model.
+     * </p>
+     * 
+     * @return {@code FilterResult}
+     */
     private FilterResult extractNodesFromTaskTree() {
         return new TaskModelFilter(new IterativeDFSFilterStrategy()).filterByEventType(TEXT_INPUT)
             .from(this.taskModel);
     }
-    
-    private float calculateEvaluationMetric(List<ITask> textInputEvents, List<ITask> nonTextInputEvents) {
+
+    /**
+     * 
+     * <p>
+     * Calculates the metric.
+     * </p>
+     * 
+     * @param textInputEvents
+     *            all text input events
+     * @param nonTextInputEvents
+     *            all non text input events
+     * @return ratio between text input and non text input events
+     */
+    private float calculateEvaluationMetric(List<ITask> textInputEvents,
+                                            List<ITask> nonTextInputEvents)
+    {
         float numberOfTextInputEvents = textInputEvents.size();
         float numberOfNonTextInputEvents = nrOfEventTasksNotMatchedFilter(nonTextInputEvents);
@@ -78,20 +106,33 @@
     }
 
+    /**
+     * 
+     * <p>
+     * Filters all {@link IEventTask}s from non text input event.
+     * </p>
+     * 
+     * @param nonTextInputEvents
+     *            all non text input events
+     * @return number of {@link IEventTask}s
+     */
     private int nrOfEventTasksNotMatchedFilter(List<ITask> nonTextInputEvents) {
-        return Iterables.size(Iterables.filter(nonTextInputEvents,
-                                               new Predicate<ITask>() {
+        return Iterables.size(Iterables.filter(nonTextInputEvents, new Predicate<ITask>() {
 
-                                                   @Override
-                                                   public boolean apply(ITask task) {
-                                                       return task instanceof IEventTask;
-                                                   }
-                                               }));
+            @Override
+            public boolean apply(ITask task) {
+                return task instanceof IEventTask;
+            }
+        }));
     }
 
-    /* (non-Javadoc)
-     * @see de.ugoe.cs.autoquest.usability.rules.UsabilityRule#callEvaluationMetho(de.ugoe.cs.autoquest.usability.EvaluationMethodCaller)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * de.ugoe.cs.autoquest.usability.rules.UsabilityRule#callEvaluationMetho(de.ugoe.cs.autoquest
+     * .usability.EvaluationMethodCaller)
      */
     @Override
-    public Optional<UsabilityDefect> callEvaluationMethod(EvaluationMethodCaller evaluationMethodCaller)
+    public Optional<UsabilityProblemDescription> callEvaluationMethod(EvaluationMethodCaller evaluationMethodCaller)
     {
         return evaluationMethodCaller.check(this);
