diff --git a/src/formula/AbstractFilter.h b/src/formula/AbstractFilter.h
index f1e7017f7..3824817fe 100644
--- a/src/formula/AbstractFilter.h
+++ b/src/formula/AbstractFilter.h
@@ -17,25 +17,72 @@ namespace storm {
 namespace property {
 
 /*!
- *
+ * This enum contains value indicating which kind of scheduler is to be used
+ * for path formulas, i.e. probability or reward queries on nondeterministic models.
  */
 enum OptimizingOperator {MINIMIZE, MAXIMIZE, UNDEFINED};
 
+/*!
+ * This is the base class for the logic specific filter classes.
+ * It provides the logic independent functionality concerning the organization of actions and the optimization operator.
+ *
+ * The general role of the filter is to twofold.
+ *
+ * On the one hand it is meant to be the interface between the control and the formulas and modelchecker.
+ * It sits one level above the root of the formula tree which is represented by it.
+ * This gives a distinct class that can be moved through the control functions, thus encapsulating the formula tree and all its classes.
+ *
+ * On the other hand, as all modelchecking is initiated through its interface it opens up the opportunity to manipulate the output generated by the modelchecker.
+ * The manipulation is done by a series of filter actions which are evaluated after the modelchecker has finished.
+ * Each action has a distinct function that ranges from state selection to sorting.
+ * The input for the first filter action consists mainly of the modelckecking result.
+ * Thereafter, the result of each filter action is used as input for the next filter action until all actions have been executed.
+ * The final result is then used to generate the output.
+ */
 template <class T>
 class AbstractFilter {
 
 public:
 
+	/*!
+	 * Constructs an empty AbstractFilter.
+	 * If a value for the optimization operator is given it will be set accordingly.
+	 * Otherwise, it will be undefined. The undefined value is intended for deterministic
+	 * models, as the do not need a scheduler resolving the nondeterminism.
+	 *
+	 * @note If a query is executed on a nondeterministic model using an undefined optimization operator
+	 *       the modelchecker will throw an exception.
+	 *
+	 * @param opt The value of the optimization operator.
+	 */
 	AbstractFilter(OptimizingOperator opt = UNDEFINED) : opt(opt) {
 		// Intentionally left empty.
 	}
 
+	/*!
+	 * Constructs an AbstractFilter containing only the specified action.
+	 *
+	 * @note If the shared_ptr to the action is empty (contains a nullptr) the Abstract filter will be created empty.
+	 *
+	 * @param action The action to be executed during evaluation.
+	 * @param opt The value of the optimization operator.
+	 */
 	AbstractFilter(std::shared_ptr<action::AbstractAction<T>> const & action, OptimizingOperator opt = UNDEFINED) : opt(opt) {
 		if(action.get() != nullptr) {
 			actions.push_back(action);
 		}
 	}
 
+	/*!
+	 * Constructs an AbstractFilter containing the given vector of actions as action list.
+	 * The actions will be executed in ascending order of index.
+	 *
+	 * @note Any vector entry containing an empty shared_ptr will be ignored. Thus, giving a
+	 *       vector of five actions with two empty shared_ptr will result in a AbstractFilter containing three actions.
+	 *
+	 * @param actions A vector of shared_ptr to the actions to be executed during evaluation.
+	 * @param opt The value of the optimization operator.
+	 */
 	AbstractFilter(std::vector<std::shared_ptr<action::AbstractAction<T>>> const & actions, OptimizingOperator opt = UNDEFINED) {
 		// Filter out all nullptr actions.
 		// First detect that there is at least one.
@@ -64,10 +111,18 @@ public:
 		this->opt = opt;
 	}
 
+	/*!
+	 * The virtual destructor.
+	 */
 	virtual ~AbstractFilter() {
 		// Intentionally left empty.
 	}
 
+	/*!
+	 * Returns a string representation of the filter.
+	 *
+	 * @returns A string representing the filter.
+	 */
 	virtual std::string toString() const {
 		std::string desc = "filter(";
 
@@ -87,25 +142,32 @@ public:
 		return desc;
 	}
 
-	virtual std::string toPrettyString() const {
-		std::string desc = "Filter: ";
-		desc += "\nActions:";
-		for(auto action : actions) {
-			desc += "\n\t" + action->toString();
-		}
-		return desc;
-	}
-
+	/*!
+	 * Appends the given action to the list of actions to be executed during evaluation.
+	 *
+	 * @note If the argument is an empty shared_ptr nothing will happen.
+	 *
+	 * @param action A shared pointer to the action to be appended.
+	 */
 	void addAction(std::shared_ptr<action::AbstractAction<T>> const & action) {
 		if(action.get() != nullptr) {
 			actions.push_back(action);
 		}
 	}
 
+	/*!
+	 * Removes the last action.
+	 */
 	void removeAction() {
 		actions.pop_back();
 	}
 
+	/*!
+	 * Returns the action at the specified position.
+	 *
+	 * @param position The position of the action to be returned within the action list.
+	 * @returns A shared pointer to the specified action.
+	 */
 	std::shared_ptr<action::AbstractAction<T>> getAction(uint_fast64_t position) {
 		// Make sure the chosen position is not beyond the end of the vector.
 		// If it is so return the last element.
@@ -116,22 +178,40 @@ public:
 		}
 	}
 
+	/*!
+	 * Returns the number of actions to be executed during evaluation.
+	 *
+	 * @returns The number of actions in the action list.
+	 */
 	uint_fast64_t getActionCount() const {
 		return actions.size();
 	}
 
+	/*!
+	 * Sets whether a minimizing or a maximizing scheduler is to be used for
+	 * modelchecking of path formulas, i.e. probability and reward queries.
+	 *
+	 * @param opt The new operator specifying the scheduler to be used for path formulas.
+	 */
 	void setOptimizingOperator(OptimizingOperator opt) {
 		this->opt = opt;
 	}
 
+	/*!
+	 * Returns the current optimization operator.
+	 *
+	 * @return The optimization operator.
+	 */
 	OptimizingOperator getOptimizingOperator() const {
 		return opt;
 	}
 
 protected:
 
+	//! The vector containing the actions to be executed during evaluation.
 	std::vector<std::shared_ptr<action::AbstractAction<T>>> actions;
 
+	//! The optimization operator specifying if and which kind of scheduler is to be used during modelchecking of path formulas on nondeterministic models.
 	OptimizingOperator opt;
 };
 
diff --git a/src/formula/AbstractFormula.h b/src/formula/AbstractFormula.h
index 8ab2fd130..9b009f208 100644
--- a/src/formula/AbstractFormula.h
+++ b/src/formula/AbstractFormula.h
@@ -20,44 +20,36 @@ template <class T> class AbstractFormula;
 namespace storm {
 namespace property {
 
-//abstract
+// do properties
+
 /*!
- *	@brief Abstract base class for logic Abstract formulas in general.
- *
- * The namespace storm::property::abstract contains versions of the formula classes which are logic abstract, and contain
- * the implementation which is not directly dependent on the logics.
- * The classes for the subtrees are referenced by the template parameter FormulaType, which is typically instantiated in
- * the derived classes of concrete logics.
- *
- * The instantiation of FormulaType should be a subclass of AbstractFormula, as the functions "toString" and "validate"
- * of the subformulas are needed.
+ * This is the abstract base class for every formula class in every logic.
  *
- * @note
- * 		Even though the namespace is called "abstract", its classes may be completely implemented; abstract here denotes
- * 		the abstraction from a concrete logic.
+ * There are currently three implemented logics Ltl, Csl and Pctl.
+ * The implementation of these logics can be found in the namespaces storm::property::<logic>
+ * where <logic> is one of ltl, pctl and csl.
  *
- *	@attention This class is abstract.
- *	@note Formula classes do not have copy constructors. The parameters of the constructors are usually the subtrees, so
- * 	   the syntax conflicts with copy constructors for unary operators. To produce an identical object, the classes
- * 	   AbstractFormula and AbstractFormula offer the method clone().
- *
- *	This is the base class for every formula class in every logic.
+ * @note While formula classes do have copy constructors using a copy constructor
+ *       will yield a formula objects whose formula subtree consists of the same objects
+ *       as the original formula. The ownership of the formula tree will be shared between
+ *       the original and the copy.
  */
 template <class T>
 class AbstractFormula {
 
 public:
+
 	/*!
-	 * Virtual destructor.
+	 * The virtual destructor.
 	 */
 	virtual ~AbstractFormula() {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 *	@brief Return string representation of this formula.
+	 *	Return string representation of this formula.
 	 *
-	 *	@note every subclass must implement this method.
+	 *	@note Every subclass must implement this method.
 	 *
 	 *	@returns a string representation of the formula
 	 */
diff --git a/src/formula/ComparisonType.h b/src/formula/ComparisonType.h
index 98ee80373..bb6ea82ee 100644
--- a/src/formula/ComparisonType.h
+++ b/src/formula/ComparisonType.h
@@ -11,6 +11,11 @@
 namespace storm {
 namespace property {
 
+/*!
+ * An enum representing the greater- and less-than operators in both
+ * the strict (<, >) and the non strict (<=, >=) variant.
+ * It is mainly used to represent upper and lower bounds.
+ */
 enum ComparisonType { LESS, LESS_EQUAL, GREATER, GREATER_EQUAL };
 
 }
diff --git a/src/formula/IOptimizingOperator.h b/src/formula/IOptimizingOperator.h
deleted file mode 100644
index f89419d91..000000000
--- a/src/formula/IOptimizingOperator.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * IOptimizingOperator.h
- *
- *  Created on: 17.04.2013
- *      Author: thomas
- */
-
-#ifndef STORM_FORMULA_IOPTIMIZINGOPERATOR_H_
-#define STORM_FORMULA_IOPTIMIZINGOPERATOR_H_
-
-namespace storm {
-namespace property {
-
-/*!
- * @brief Interface for optimizing operators
- *
- * Needed to link abstract classes in concrete logics with the logic-abstract implementation.
- */
-class IOptimizingOperator {
-public:
-
-	virtual ~IOptimizingOperator() {
-		// Intentionally left empty
-	}
-
-	/*!
-	 * Retrieves whether the operator is to be interpreted as an optimizing (i.e. min/max) operator.
-	 * @returns True if the operator is an optimizing operator.
-	 */
-	virtual bool isOptimalityOperator() const = 0;
-
-	/*!
-	 * Retrieves whether the operator is a minimizing operator given that it is an optimality
-	 * operator.
-	 * @returns True if the operator is an optimizing operator and it is a minimizing operator and
-	 * false otherwise, i.e. if it is either not an optimizing operator or not a minimizing operator.
-	 */
-	virtual bool isMinimumOperator() const = 0;
-};
-
-} /* namespace property */
-} /* namespace storm */
-#endif /* STORM_FORMULA_IOPTIMIZINGOPERATOR_H_ */
diff --git a/src/formula/actions/AbstractAction.h b/src/formula/actions/AbstractAction.h
index 77d2089ea..0912751fd 100644
--- a/src/formula/actions/AbstractAction.h
+++ b/src/formula/actions/AbstractAction.h
@@ -19,78 +19,122 @@ namespace storm {
 namespace property {
 namespace action {
 
+/*!
+ * This is the abstract base class for all filter actions.
+ *
+ * Each action implements a distinct function which executed each time evaluate() is called.
+ * The input and output for each action is an instance of the Result struct.
+ * Thus the action is able to manipulate both the selection of output states and the order in which they are returned.
+ */
 template <class T>
 class AbstractAction {
 
 public:
 
+	/*!
+	 * This is the struct used by all actions to pass along information.
+	 *
+	 * It contains fields for the two possible data structures containing the modelchecking results.
+	 * A value vector for path formulas and a bit vector for state formulas.
+	 * The two other fields are used to describe a selection as well as an ordering of states within the modelchecking results.
+	 *
+	 * @note For each formula the modelchecker will return either a BitVector or a std::vector.
+	 *       Thus, either the state- or the pathResult should be set to be empty.
+	 *       If both contain a value for at least one state the pathResult will be used.
+	 *
+	 * @note The four vectors should always have the same number of entries.
+	 */
 	struct Result {
 
 		/*!
-		 *
+		 * Constructs an empty Result.
 		 */
 		Result() : selection(), stateMap(), pathResult(), stateResult(){
 			// Intentionally left empty.
 		}
 
 		/*!
+		 * Copy constructs a Result.
 		 *
+		 * @param other The Result from which the fields are copied.
 		 */
 		Result(Result const & other) : selection(other.selection), stateMap(other.stateMap), pathResult(other.pathResult), stateResult(other.stateResult) {
 			// Intentionally left empty.
 		}
 
 		/*!
+		 * Constructs a Result using values for each field.
 		 *
+		 * @param selection A BitVector describing which states are currently selected.
+		 * @param stateMap A vector representing an ordering on the states within the modelchecking results.
+		 * @param pathResult The modelchecking result for a path formula.
+		 * @param stateResult The modelchecking result for a state formula.
 		 */
 		Result(storm::storage::BitVector const & selection, std::vector<uint_fast64_t> const & stateMap, std::vector<T> const & pathResult, storm::storage::BitVector const & stateResult) : selection(selection), stateMap(stateMap), pathResult(pathResult), stateResult(stateResult) {
 			// Intentionally left empty.
 		}
 
-		//!
+		//! A BitVector describing which states are currently selected.
+		//! For state i the i-th bit is true iff state i is selected.
 		storm::storage::BitVector selection;
 
-		//!
+		//! A vector representing an ordering on the states within the modelchecking results.
+		//! The first value of the vector is the index of the state to be returned first.
+		//! Thus, stateMap[i] is the index of the state that is to be returned at position i.
 		std::vector<uint_fast64_t> stateMap;
 
-		//!
+		//! The modelchecking result for a path formula.
 		std::vector<T> pathResult;
 
-		//!
+		//! The modelchecking result for a state formula.
 		storm::storage::BitVector stateResult;
 	};
 
 	/*!
-	 * Virtual destructor
-	 * To ensure that the right destructor is called
+	 * The virtual destructor.
+	 * To ensure that the right destructor is called.
 	 */
 	virtual ~AbstractAction() {
 		//Intentionally left empty
 	}
 
-	/*
+	/*!
+	 * Evaluate the action for a Prctl formula.
 	 *
+	 * @param result The Result struct on which the action is to be evaluated.
+	 * @param mc The Prctl modelchecker that computed the path- or stateResult contained in the Result struct.
+	 * @returns A Result struct containing the output of the action.
 	 */
-	virtual Result evaluate(Result const & filterResult, storm::modelchecker::prctl::AbstractModelChecker<T> const & mc) const {
+	virtual Result evaluate(Result const & result, storm::modelchecker::prctl::AbstractModelChecker<T> const & mc) const {
 		return Result();
 	}
 
-	/*
+	/*!
+	 * Evaluate the action for a Csl formula.
 	 *
+	 * @param result The Result struct on which the action is to be evaluated.
+	 * @param mc The Csl modelchecker that computed the path- or stateResult contained in the Result struct.
+	 * @returns A Result struct containing the output of the action.
 	 */
-	virtual Result evaluate(Result const & filterResult, storm::modelchecker::csl::AbstractModelChecker<T> const & mc) const {
+	virtual Result evaluate(Result const & result, storm::modelchecker::csl::AbstractModelChecker<T> const & mc) const {
 		return Result();
 	}
 
-	/*
+	/*!
+	 * Evaluate the action for an Ltl formula.
 	 *
+	 * @param result The Result struct on which the action is to be evaluated.
+	 * @param mc The Ltl modelchecker that computed the path- or stateResult contained in the Result struct.
+	 * @returns A Result struct containing the output of the action.
 	 */
-	virtual Result evaluate(Result const & filterResult, storm::modelchecker::ltl::AbstractModelChecker<T> const & mc) const {
+	virtual Result evaluate(Result const & result, storm::modelchecker::ltl::AbstractModelChecker<T> const & mc) const {
 		return Result();
 	}
 
 	/*!
+	 * Returns a string representation of the action.
 	 *
+	 * @returns A string representing the action.
 	 */
 	virtual std::string toString() const = 0;
 
diff --git a/src/formula/actions/BoundAction.h b/src/formula/actions/BoundAction.h
index f90107742..1603c3308 100644
--- a/src/formula/actions/BoundAction.h
+++ b/src/formula/actions/BoundAction.h
@@ -16,52 +16,83 @@ namespace storm {
 namespace property {
 namespace action {
 
+/*!
+ * The bound action deselects all states whose modelchecking values do not satisfy the given bound.
+ *
+ * Strict and non strict upper and lower bounds can be represented.
+ * For modelchecking results of state formulas the value is taken to be 1 iff true and 0 otherwise.
+ */
 template <class T>
 class BoundAction : public AbstractAction<T> {
 
+	// Convenience typedef to make the code more readable.
 	typedef typename AbstractAction<T>::Result Result;
 
 public:
 
+	/*!
+	 * Constructs an empty BoundAction.
+	 * The bound is set to >= 0. Thus, all states will be selected by the action.
+	 */
 	BoundAction() : comparisonOperator(storm::property::GREATER_EQUAL), bound(0) {
 		//Intentionally left empty.
 	}
 
+	/*!
+	 * Constructs a BoundAction using the given values for the comparison operator and the bound.
+	 *
+	 * @param comparisonOperator The operator used to make the comparison between the bound and the modelchecking values for each state.
+	 * @param bound The bound to compare the modelchecking values against.
+	 */
 	BoundAction(storm::property::ComparisonType comparisonOperator, T bound) : comparisonOperator(comparisonOperator), bound(bound) {
 		//Intentionally left empty.
 	}
 
 	/*!
-	 * Virtual destructor
-	 * To ensure that the right destructor is called
+	 * The virtual destructor.
+	 * To ensure that the right destructor is called.
 	 */
 	virtual ~BoundAction() {
 		//Intentionally left empty
 	}
 
 	/*!
+	 * Evaluate the action for an Prctl formula.
 	 *
+	 * @param result The Result struct on which the action is to be evaluated.
+	 * @param mc The Prctl modelchecker that computed the path- or stateResult contained in the Result struct.
+	 * @returns A Result struct containing the output of the action.
 	 */
 	virtual Result evaluate(Result const & result, storm::modelchecker::prctl::AbstractModelChecker<T> const & mc) const override {
 		return evaluate(result);
 	}
 
 	/*!
+	 * Evaluate the action for an Csl formula.
 	 *
+	 * @param result The Result struct on which the action is to be evaluated.
+	 * @param mc The Csl modelchecker that computed the path- or stateResult contained in the Result struct.
+	 * @returns A Result struct containing the output of the action.
 	 */
 	virtual Result evaluate(Result const & result, storm::modelchecker::csl::AbstractModelChecker<T> const & mc) const override {
 		return evaluate(result);
 	}
 
 	/*!
+	 * Evaluate the action for an Ltl formula.
 	 *
+	 * @param result The Result struct on which the action is to be evaluated.
+	 * @param mc The Ltl modelchecker that computed the path- or stateResult contained in the Result struct.
+	 * @returns A Result struct containing the output of the action.
 	 */
 	virtual Result evaluate(Result const & result, storm::modelchecker::ltl::AbstractModelChecker<T> const & mc) const override {
 		return evaluate(result);
 	}
 
 	/*!
+	 * Returns a string representation of this action.
 	 *
+	 * @returns A string representing this action.
 	 */
 	virtual std::string toString() const override {
 		std::string out = "bound(";
@@ -92,7 +123,14 @@ public:
 private:
 
 	/*!
+	 * Evaluate the action.
 	 *
+	 * As the BoundAction does not depend on the model or the formula for which the modelchecking result was computed,
+	 * it does not depend on the modelchecker at all. This internal version of the evaluate method therefore only needs the
+	 * modelchecking result as input.
+	 *
+	 * @param result The Result struct on which the action is to be evaluated.
+	 * @returns A Result struct containing the output of the action.
 	 */
 	virtual Result evaluate(Result const & result) const {
 
@@ -159,7 +197,10 @@ private:
 		return Result(out, result.stateMap, result.pathResult, result.stateResult);
 	}
 
+	// The operator used to make the comparison between the bound and the modelchecking values for each state at time of evaluation.
 	storm::property::ComparisonType comparisonOperator;
+
+	// The bound to compare the modelchecking values against during evaluation.
 	T bound;
 
 };
diff --git a/src/formula/actions/FormulaAction.h b/src/formula/actions/FormulaAction.h
index 9ac3ad861..5028253fe 100644
--- a/src/formula/actions/FormulaAction.h
+++ b/src/formula/actions/FormulaAction.h
@@ -19,35 +19,62 @@ namespace storm {
 namespace property {
 namespace action {
 
+/*!
+ * The Formula action deselects all states that do not satisfy the given state formula.
+ *
+ * @note Since there is no modelchecker implemented for Ltl formulas (except the abstract base class)
+ *       the formula action currently only supports Prctl and Csl state formulas.
+ */
 template <class T>
 class FormulaAction : public AbstractAction<T> {
 
+	// Convenience typedef to make the code more readable.
 	typedef typename AbstractAction<T>::Result Result;
 
 public:
 
+
+	/*!
+	 * Constructs an empty FormulaAction.
+	 *
+	 * The evaluation will do nothing and return the Result as it was put in.
+	 */
 	FormulaAction() : prctlFormula(nullptr), cslFormula(nullptr) {
 		//Intentionally left empty.
 	}
 
+	/*!
+	 * Constructs a FormulaAction using the given Prctl formula.
+	 *
+	 * @param prctlFormula The Prctl state formula used to filter the selection during evaluation.
+	 */
 	FormulaAction(std::shared_ptr<storm::property::prctl::AbstractStateFormula<T>> const & prctlFormula) : prctlFormula(prctlFormula), cslFormula(nullptr) {
 		//Intentionally left empty.
 	}
 
+	/*!
+	 * Constructs a FormulaAction using the given Csl formula.
+	 *
+	 * @param cslFormula The Csl state formula used to filter the selection during evaluation.
+	 */
 	FormulaAction(std::shared_ptr<storm::property::csl::AbstractStateFormula<T>> const & cslFormula) : prctlFormula(nullptr), cslFormula(cslFormula) {
 		//Intentionally left empty.
 	}
 
 	/*!
-	 * Virtual destructor
-	 * To ensure that the right destructor is called
+	 * The virtual destructor.
+	 * To ensure that the right destructor is called.
 	 */
 	virtual ~FormulaAction() {
 		// Intentionally left empty.
 	}
 
 	/*!
+	 * Evaluate the action for an Prctl formula.
 	 *
+	 * @param result The Result struct on which the action is to be evaluated.
+	 * @param mc The Prctl modelchecker that computed the path- or stateResult contained in the Result struct.
+	 * @returns A Result struct containing the output of the action.
 	 */
 	virtual Result evaluate(Result const & result, storm::modelchecker::prctl::AbstractModelChecker<T> const & mc) const override {
 
@@ -62,7 +89,11 @@ public:
 	}
 
 	/*!
+	 * Evaluate the action for an Csl formula.
 	 *
+	 * @param result The Result struct on which the action is to be evaluated.
+	 * @param mc The Csl modelchecker that computed the path- or stateResult contained in the Result struct.
+	 * @returns A Result struct containing the output of the action.
 	 */
 	virtual Result evaluate(Result const & result, storm::modelchecker::csl::AbstractModelChecker<T> const & mc) const override {
 
@@ -77,7 +108,9 @@ public:
 	}
 
 	/*!
+	 * Returns a string representation of this action.
 	 *
+	 * @returns A string representing this action.
 	 */
 	virtual std::string toString() const override {
 		std::string out = "formula(";
@@ -91,7 +124,11 @@ public:
 	}
 
 private:
+
+	// The Prctl state formula used during evaluation.
 	std::shared_ptr<storm::property::prctl::AbstractStateFormula<T>> prctlFormula;
+
+	// The Csl state formula used during evaluation.
 	std::shared_ptr<storm::property::csl::AbstractStateFormula<T>> cslFormula;
 
 };
diff --git a/src/formula/actions/InvertAction.h b/src/formula/actions/InvertAction.h
index 5492e4644..7084d52e2 100644
--- a/src/formula/actions/InvertAction.h
+++ b/src/formula/actions/InvertAction.h
@@ -14,48 +14,71 @@ namespace storm {
 namespace property {
 namespace action {
 
+/*!
+ * The InvertAction inverts the selection, selecting precisely the unselected states.
+ */
 template <class T>
 class InvertAction : public AbstractAction<T> {
 
+	// Convenience typedef to make the code more readable.
 	typedef typename AbstractAction<T>::Result Result;
 
 public:
 
+	/*!
+	 * Constructs an InvertAction.
+	 *
+	 * As the simple inversion of the selection does not need any parameters, the empty constructor is the only one needed.
+	 */
 	InvertAction() {
 		//Intentionally left empty.
 	}
 
 	/*!
-	 * Virtual destructor
-	 * To ensure that the right destructor is called
+	 * The virtual destructor.
+	 * To ensure that the right destructor is called.
 	 */
 	virtual ~InvertAction() {
 		//Intentionally left empty
 	}
 
 	/*!
+	 * Evaluate the action for a Prctl formula.
 	 *
+	 * @param result The Result struct on which the action is to be evaluated.
+	 * @param mc The Prctl modelchecker that computed the path- or stateResult contained in the Result struct.
+	 * @returns A Result struct containing the output of the action.
 	 */
 	virtual Result evaluate(Result const & result, storm::modelchecker::prctl::AbstractModelChecker<T> const & mc) const override {
 		return evaluate(result);
 	}
 
 	/*!
+	 * Evaluate the action for a Csl formula.
 	 *
+	 * @param result The Result struct on which the action is to be evaluated.
+	 * @param mc The Csl modelchecker that computed the path- or stateResult contained in the Result struct.
+	 * @returns A Result struct containing the output of the action.
 	 */
 	virtual Result evaluate(Result const & result, storm::modelchecker::csl::AbstractModelChecker<T> const & mc) const override {
 		return evaluate(result);
 	}
 
 	/*!
+	 * Evaluate the action for a Ltl formula.
 	 *
+	 * @param result The Result struct on which the action is to be evaluated.
+	 * @param mc The Ltl modelchecker that computed the path- or stateResult contained in the Result struct.
+	 * @returns A Result struct containing the output of the action.
 	 */
 	virtual Result evaluate(Result const & result, storm::modelchecker::ltl::AbstractModelChecker<T> const & mc) const override {
 		return evaluate(result);
 	}
 
 	/*!
+	 * Returns a string representation of this action.
 	 *
+	 * @returns A string representing this action.
 	 */
 	virtual std::string toString() const override {
 		return "invert";
@@ -64,7 +87,14 @@ public:
 private:
 
 	/*!
+	 * Evaluate the action.
+	 *
+	 * As the InvertAction does not depend on the model or the formula for which the modelchecking result was computed,
+	 * it does not depend on the modelchecker at all. This internal version of the evaluate method therefore only needs the
+	 * modelchecking result as input.
 	 *
+	 * @param result The Result struct on which the action is to be evaluated.
+	 * @returns A Result struct containing the output of the action.
 	 */
 	virtual Result evaluate(Result const & result) const {
 		storm::storage::BitVector out(result.selection);
diff --git a/src/formula/actions/RangeAction.h b/src/formula/actions/RangeAction.h
index 382492d49..8136715b2 100644
--- a/src/formula/actions/RangeAction.h
+++ b/src/formula/actions/RangeAction.h
@@ -14,57 +14,80 @@ namespace storm {
 namespace property {
 namespace action {
 
+/*!
+ * The RangeAction deselects all states that are not within the given range.
+ *
+ * The bounds of the range given are indices in the result ordering.
+ * Thus, if the lower bound is 0 and the upper bound is 5 then all states that are not
+ * at index 0 through 5 (including) in the state ordering will be deselected.
+ * This action is thought to be used in connection with the SortAction.
+ */
 template <class T>
 class RangeAction : public AbstractAction<T> {
 
+	// Convenience typedef to make the code more readable.
 	typedef typename AbstractAction<T>::Result Result;
 
 public:
 
-	RangeAction() : from(0), to(0) {
-		//Intentionally left empty.
-	}
-
 	/*!
-	 *	Including the state with position to.
+	 *  Construct a RangeAction using the given values.
+	 *
+	 *  If no values are given they default to [0,UINT_FAST64_MAX] thus deselecting no state at evaluation.
+	 *
+	 *	@note The interval bounds are included in the interval.
 	 */
-	RangeAction(uint_fast64_t from, uint_fast64_t to) : from(from), to(to) {
+	RangeAction(uint_fast64_t from = 0, uint_fast64_t to = UINT_FAST64_MAX) : from(from), to(to) {
 		if(from > to) {
 			throw storm::exceptions::IllegalArgumentValueException() << "The end of the range is lower than its beginning";
 		}
 	}
 
 	/*!
-	 * Virtual destructor
-	 * To ensure that the right destructor is called
+	 * The virtual destructor.
+	 * To ensure that the right destructor is called.
 	 */
 	virtual ~RangeAction() {
 		//Intentionally left empty
 	}
 
 	/*!
+	 * Evaluate the action for a Prctl formula.
 	 *
+	 * @param result The Result struct on which the action is to be evaluated.
+	 * @param mc The Prctl modelchecker that computed the path- or stateResult contained in the Result struct.
+	 * @returns A Result struct containing the output of the action.
 	 */
 	virtual Result evaluate(Result const & result, storm::modelchecker::prctl::AbstractModelChecker<T> const & mc) const override {
 		return evaluate(result);
 	}
 
 	/*!
+	 * Evaluate the action for a Csl formula.
 	 *
+	 * @param result The Result struct on which the action is to be evaluated.
+	 * @param mc The Csl modelchecker that computed the path- or stateResult contained in the Result struct.
+	 * @returns A Result struct containing the output of the action.
 	 */
 	virtual Result evaluate(Result const & result, storm::modelchecker::csl::AbstractModelChecker<T> const & mc) const override {
 		return evaluate(result);
 	}
 
 	/*!
+	 * Evaluate the action for a Ltl formula.
 	 *
+	 * @param result The Result struct on which the action is to be evaluated.
+	 * @param mc The Ltl modelchecker that computed the path- or stateResult contained in the Result struct.
+	 * @returns A Result struct containing the output of the action.
 	 */
 	virtual Result evaluate(Result const & result, storm::modelchecker::ltl::AbstractModelChecker<T> const & mc) const override {
 		return evaluate(result);
 	}
 
 	/*!
+	 * Returns a string representation of this action.
 	 *
+	 * @returns A string representing this action.
 	 */
 	virtual std::string toString() const override {
 		std::string out = "range(";
@@ -78,7 +101,14 @@ public:
 private:
 
 	/*!
+	 * Evaluate the action.
 	 *
+	 * As the RangeAction does not depend on the model or the formula for which the modelchecking result was computed,
+	 * it does not depend on the modelchecker at all. This internal version of the evaluate method therefore only needs the
+	 * modelchecking result as input.
+	 *
+	 * @param result The Result struct on which the action is to be evaluated.
+	 * @returns A Result struct containing the output of the action.
 	 */
 	virtual Result evaluate(Result const & result) const {
 		//Initialize the output vector.
@@ -110,7 +140,10 @@ private:
 		return Result(out, result.stateMap, result.pathResult, result.stateResult);
 	}
 
+	// The lower bound of the interval of states not deselected.
 	uint_fast64_t from;
+
+	// The upper bound of the interval of states not deselected.
 	uint_fast64_t to;
 
 };
diff --git a/src/formula/actions/SortAction.h b/src/formula/actions/SortAction.h
index ea676dfd4..289426f6f 100644
--- a/src/formula/actions/SortAction.h
+++ b/src/formula/actions/SortAction.h
@@ -15,54 +15,81 @@ namespace storm {
 namespace property {
 namespace action {
 
+/*!
+ * This action manipulates the state ordering by sorting the states by some category.
+ *
+ * Currently the states can be sorted either by index or by value; ascending or descending.
+ * This is done using the standard libraries sort function, thus the action evaluates in O(n*log n) where n is the number of states.
+ */
 template <class T>
 class SortAction : public AbstractAction<T> {
 
+	// Convenience typedef to make the code more readable.
 	typedef typename AbstractAction<T>::Result Result;
 
 public:
 
+	//! Enum defining the categories in relation to which the states can be sorted.
 	enum SortingCategory {INDEX, VALUE};
 
-	SortAction() : category(INDEX), ascending(true) {
-		//Intentionally left empty.
-	}
-
-	SortAction(SortingCategory category, bool ascending = true) : category(category), ascending(ascending) {
+	/*!
+	 * Construct a SortAction using the given values.
+	 *
+	 * If no values are given the action will sort by ascending state index.
+	 *
+	 * @param category An enum value identifying the category by which the states are to be ordered.
+	 * @param ascending Determines whether the values are to be sorted in ascending or descending order.
+	 *                  The parameter is to be set to true iff the values are to be sorted in ascending order.
+	 */
+	SortAction(SortingCategory category = INDEX, bool ascending = true) : category(category), ascending(ascending) {
 		//Intentionally left empty.
 	}
 
 	/*!
-	 * Virtual destructor
-	 * To ensure that the right destructor is called
+	 * The virtual destructor.
+	 * To ensure that the right destructor is called.
 	 */
 	virtual ~SortAction() {
 		//Intentionally left empty
 	}
 
 	/*!
+	 * Evaluate the action for a Prctl formula.
 	 *
+	 * @param result The Result struct on which the action is to be evaluated.
+	 * @param mc The Prctl modelchecker that computed the path- or stateResult contained in the Result struct.
+	 * @returns A Result struct containing the output of the action.
 	 */
 	virtual Result evaluate(Result const & result, storm::modelchecker::prctl::AbstractModelChecker<T> const & mc) const override {
 		return evaluate(result);
 	}
 
 	/*!
+	 * Evaluate the action for a Csl formula.
 	 *
+	 * @param result The Result struct on which the action is to be evaluated.
+	 * @param mc The Csl modelchecker that computed the path- or stateResult contained in the Result struct.
+	 * @returns A Result struct containing the output of the action.
 	 */
 	virtual Result evaluate(Result const & result, storm::modelchecker::csl::AbstractModelChecker<T> const & mc) const override {
 		return evaluate(result);
 	}
 
 	/*!
+	 * Evaluate the action for a Ltl formula.
 	 *
+	 * @param result The Result struct on which the action is to be evaluated.
+	 * @param mc The Ltl modelchecker that computed the path- or stateResult contained in the Result struct.
+	 * @returns A Result struct containing the output of the action.
 	 */
 	virtual Result evaluate(Result const & result, storm::modelchecker::ltl::AbstractModelChecker<T> const & mc) const override {
 		return evaluate(result);
 	}
 
 	/*!
+	 * Returns a string representation of this action.
 	 *
+	 * @returns A string representing this action.
 	 */
 	virtual std::string toString() const override {
 		std::string out = "sort(";
@@ -87,7 +114,14 @@ public:
 private:
 
 	/*!
+	 * Evaluate the action.
+	 *
+	 * As the SortAction does not depend on the model or the formula for which the modelchecking result was computed,
+	 * it does not depend on the modelchecker at all. This internal version of the evaluate method therefore only needs the
+	 * modelchecking result as input.
 	 *
+	 * @param result The Result struct on which the action is to be evaluated.
+	 * @returns A Result struct containing the output of the action.
 	 */
 	Result evaluate(Result const & result) const {
 
@@ -106,7 +140,11 @@ private:
 	}
 
 	/*!
+	 * This method returns a vector of the given length filled with the numbers 0 to length-1 in ascending or descending order,
+	 * depending on the value of the member variable ascending. Thus it sorts by state index.
 	 *
+	 * @param length The length of the generated vector.
+	 * @returns A vector of unsigned integers from 0 to length-1 in ascending or descending order.
 	 */
 	std::vector<uint_fast64_t> sort(uint_fast64_t length) const {
 
@@ -128,7 +166,15 @@ private:
 	}
 
 	/*!
+	 * Sort the stateMap vector representing the current state ordering by the values in the values vector.
 	 *
+	 * Here the entries in the values vector are assumed to be the modelchecking results of a path formula.
+	 * Hence, the value at index i is associated with state i, i.e the value i in the stateMap.
+	 * The ordering direction (ascending/decending) is given by the member variable ascending, set in the constructor.
+	 *
+	 * @param stateMap A vector representing the current state ordering.
+	 * @param values A vector containing the values by which the stateMap is to be ordered.
+	 * @returns A vector containing the reordered entries of the stateMap.
 	 */
 	std::vector<uint_fast64_t> sort(std::vector<uint_fast64_t> const & stateMap, std::vector<T> const & values) const {
 
@@ -146,7 +192,15 @@ private:
 	}
 
 	/*!
+	 * Sort the stateMap vector representing the current state ordering by the values in the values vector.
+	 *
+	 * Here the entries in the values vector are assumed to be the modelchecking results of a state formula.
+	 * Hence, the value at index i is associated with state i, i.e the value i in the stateMap.
+	 * The ordering direction (ascending/decending) is given by the member variable ascending, set in the constructor.
 	 *
+	 * @param stateMap A vector representing the current state ordering.
+	 * @param values A vector containing the values by which the stateMap is to be ordered.
+	 * @returns A vector containing the reordered entries of the stateMap.
 	 */
 	std::vector<uint_fast64_t> sort(std::vector<uint_fast64_t> const & stateMap, storm::storage::BitVector const & values) const {
 
@@ -163,7 +217,10 @@ private:
 		return outMap;
 	}
 
+	// The category by which the states are to be ordered.
 	SortingCategory category;
+
+	// Determines whether the values are to be sorted in ascending or descending order.
 	bool ascending;
 };
 
diff --git a/src/formula/csl/AbstractCslFormula.h b/src/formula/csl/AbstractCslFormula.h
index 73d4f3dcd..360b5d411 100644
--- a/src/formula/csl/AbstractCslFormula.h
+++ b/src/formula/csl/AbstractCslFormula.h
@@ -5,8 +5,8 @@
  *      Author: Thomas Heinemann
  */
 
-#ifndef ABSTRACTCSLFORMULA_H_
-#define ABSTRACTCSLFORMULA_H_
+#ifndef STORM_FORMULA_CSL_ABSTRACTCSLFORMULA_H_
+#define STORM_FORMULA_CSL_ABSTRACTCSLFORMULA_H_
 
 #include "src/formula/AbstractFormula.h"
 
@@ -14,6 +14,8 @@ namespace storm {
 namespace property {
 namespace csl {
 
+// Forward declarations.
+
 template <class T> class ProbabilisticBoundOperator;
 template <class T> class Eventually;
 template <class T> class Until;
@@ -27,11 +29,20 @@ namespace property {
 namespace csl {
 
 /*!
- * Abstract base class for all CSL root formulas.
+ * This is the abstract base class for all Csl formulas.
+ *
+ * @note While formula classes do have copy constructors using a copy constructor
+ *       will yield a formula objects whose formula subtree consists of the same objects
+ *       as the original formula. The ownership of the formula tree will be shared between
+ *       the original and the copy.
  */
 template <class T>
 class AbstractCslFormula : public virtual storm::property::AbstractFormula<T>{
 public:
+
+	/*!
+	 * The virtual destructor.
+	 */
 	virtual ~AbstractCslFormula() {
 		// Intentionally left empty
 	}
@@ -75,4 +86,4 @@ public:
 } /* namespace csl */
 } /* namespace property */
 } /* namespace storm */
-#endif /* ABSTRACTCSLFORMULA_H_ */
+#endif /* STORM_FORMULA_CSL_ABSTRACTCSLFORMULA_H_ */
diff --git a/src/formula/csl/AbstractPathFormula.h b/src/formula/csl/AbstractPathFormula.h
index 6de58a14d..a8d415616 100644
--- a/src/formula/csl/AbstractPathFormula.h
+++ b/src/formula/csl/AbstractPathFormula.h
@@ -8,14 +8,6 @@
 #ifndef STORM_FORMULA_CSL_ABSTRACTPATHFORMULA_H_
 #define STORM_FORMULA_CSL_ABSTRACTPATHFORMULA_H_
 
-namespace storm {
-namespace property {
-namespace csl {
-template<class T> class AbstractPathFormula;
-} //namespace csl
-} //namespace property
-} //namespace storm
-
 #include "src/formula/csl/AbstractCslFormula.h"
 #include "src/modelchecker/csl/ForwardDeclarations.h"
 
@@ -28,23 +20,18 @@ namespace property {
 namespace csl {
 
 /*!
- * @brief
- * Abstract base class for Abstract path formulas.
- *
- * @attention This class is abstract.
- * @note Formula classes do not have copy constructors. The parameters of the constructors are usually the subtrees, so
- * 	   the syntax conflicts with copy constructors for unary operators. To produce an identical object, use the method
- * 	   clone().
+ * Abstract base class for Csl path formulas.
  *
- * @note
- * 		This class is intentionally not derived from AbstractCslFormula, as a path formula is not a complete CSL formula.
+ * @note Differing from the formal definitions of PRCTL a path formula may be the root of a PRCTL formula.
+ *       The result of a modelchecking process on such a formula is a vector representing the satisfaction probabilities for each state of the model.
  */
 template <class T>
 class AbstractPathFormula : public virtual storm::property::csl::AbstractCslFormula<T> {
 
 public:
+
 	/*!
-	 * empty destructor
+	 * The virtual destructor.
 	 */
 	virtual ~AbstractPathFormula() {
 		// Intentionally left empty
@@ -53,10 +40,11 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones.
 	 *
 	 * @note This function is not implemented in this class.
-	 * @returns a new AND-object that is identical the called object.
+	 *
+	 * @returns A deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractPathFormula<T>> clone() const = 0;
 
diff --git a/src/formula/csl/AbstractStateFormula.h b/src/formula/csl/AbstractStateFormula.h
index 4a50c21b2..dec96eb45 100644
--- a/src/formula/csl/AbstractStateFormula.h
+++ b/src/formula/csl/AbstractStateFormula.h
@@ -17,20 +17,15 @@ namespace property {
 namespace csl {
 
 /*!
- * @brief
- * Abstract base class for Abstract state formulas.
- *
- * @attention This class is abstract.
- * @note Formula classes do not have copy constructors. The parameters of the constructors are usually the subtrees, so
- * 	   the syntax conflicts with copy constructors for unary operators. To produce an identical object, use the method
- * 	   clone().
+ * Abstract base class for Csl state formulas.
  */
 template <class T>
 class AbstractStateFormula : public storm::property::csl::AbstractCslFormula<T> {
 
 public:
+
 	/*!
-	 * empty destructor
+	 * Empty virtual destructor.
 	 */
 	virtual ~AbstractStateFormula() {
 		// Intentionally left empty
@@ -42,7 +37,8 @@ public:
 	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
 	 *
 	 * @note This function is not implemented in this class.
-	 * @returns a new AND-object that is identical the called object.
+	 *
+	 * @returns A deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractStateFormula<T>> clone() const = 0;
 
diff --git a/src/formula/csl/And.h b/src/formula/csl/And.h
index afb78ceeb..a5ebaffb2 100644
--- a/src/formula/csl/And.h
+++ b/src/formula/csl/And.h
@@ -16,37 +16,45 @@ namespace storm {
 namespace property {
 namespace csl {
 
+// Forward declaration for the interface class.
 template <class T> class And;
 
 /*!
- *	@brief Interface class for model checkers that support And.
+ * Interface class for model checkers that support And.
  *
- *	All model checkers that support the formula class And must inherit
- *	this pure virtual class.
+ * All model checkers that support the formula class And must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IAndModelChecker {
 	public:
+
+		/*!
+		 * Empty virtual destructor.
+		 */
+		virtual ~IAndModelChecker() {
+			// Intentionally left empty
+		}
+
 		/*!
-		 *	@brief Evaluates And formula within a model checker.
+		 * Evaluates an And formula within a model checker.
 		 *
-		 *	@param obj Formula object with subformulas.
-		 *	@return Result of the formula for every node.
+		 * @param obj Formula object with subformulas.
+		 * @return The modelchecking result of the formula for every state.
 		 */
 		virtual storm::storage::BitVector checkAnd(const And<T>& obj) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract formula tree with AND node as root.
+ * Class for a Csl formula tree with an And node as root.
  *
- * Has two Abstract state formulas as sub formulas/trees.
+ * Has two Csl state formulas as sub formulas/trees.
  *
- * As AND is commutative, the order is \e theoretically not important, but will influence the order in which
+ * As And is commutative, the order is \e theoretically not important, but will influence the order in which
  * the model checker works.
  *
- * The subtrees are seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to NULL before deletion)
+ * The object has shared ownership of its subtrees. If this object is deleted and no other object has a shared
+ * ownership of the subtrees they will be deleted as well.
  *
  * @see AbstractStateFormula
  * @see AbstractCslFormula
@@ -57,29 +65,25 @@ class And : public AbstractStateFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor.
-	 * Will create an AND-node without subnotes. Will not represent a complete formula!
+	 * Creates an And node without subnodes.
+	 * The resulting object will not represent a complete formula!
 	 */
 	And() : left(nullptr), right(nullptr){
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor.
-	 * Creates an AND note with the parameters as subtrees.
+	 * Creates an And node with the parameters as subtrees.
 	 *
-	 * @param left The left sub formula
-	 * @param right The right sub formula
+	 * @param left The left sub formula.
+	 * @param right The right sub formula.
 	 */
 	And(std::shared_ptr<AbstractStateFormula<T>> const & left, std::shared_ptr<AbstractStateFormula<T>> const & right) : left(left), right(right) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Destructor.
-	 *
-	 * The subtrees are deleted with the object
-	 * (this behavior can be prevented by setting them to NULL before deletion)
+	 * Empty virtual destructor.
 	 */
 	virtual ~And() {
 		// Intentionally left empty.
@@ -88,16 +92,16 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones.
 	 *
-	 * @returns a new AND-object that is identical the called object.
+	 * @returns A new And object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractStateFormula<T>> clone() const override {
 		std::shared_ptr<And<T>> result(new And());
-		if (this->leftIsSet()) {
+		if (this->isLeftSet()) {
 		  result->setLeft(left->clone());
 		}
-		if (this->rightIsSet()) {
+		if (this->isRightSet()) {
 		  result->setRight(right->clone());
 		}
 		return result;
@@ -117,7 +121,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "(";
@@ -138,55 +144,65 @@ public:
 	}
 
 	/*!
-	 * Sets the left child node.
+	 * Gets the left child node.
 	 *
-	 * @param newLeft the new left child.
+	 * @returns The left child node.
 	 */
-	void setLeft(std::shared_ptr<AbstractStateFormula<T>> const & newLeft) {
-		left = newLeft;
+	std::shared_ptr<AbstractStateFormula<T>> const & getLeft() const {
+		return left;
 	}
 
 	/*!
-	 * Sets the right child node.
+	 * Gets the right child node.
 	 *
-	 * @param newRight the new right child.
+	 * @returns The right child node.
 	 */
-	void setRight(std::shared_ptr<AbstractStateFormula<T>> const & newRight) {
-		right = newRight;
+	std::shared_ptr<AbstractStateFormula<T>> const & getRight() const {
+		return right;
 	}
 
 	/*!
-	 * @returns a pointer to the left child node
+	 * Sets the left child node.
+	 *
+	 * @param newLeft The new left child.
 	 */
-	std::shared_ptr<AbstractStateFormula<T>> const & getLeft() const {
-		return left;
+	void setLeft(std::shared_ptr<AbstractStateFormula<T>> const & newLeft) {
+		left = newLeft;
 	}
 
 	/*!
-	 * @returns a pointer to the right child node
+	 * Sets the right child node.
+	 *
+	 * @param newRight The new right child.
 	 */
-	std::shared_ptr<AbstractStateFormula<T>> const & getRight() const {
-		return right;
+	void setRight(std::shared_ptr<AbstractStateFormula<T>> const & newRight) {
+		right = newRight;
 	}
 
 	/*!
+	 * Checks if the left child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the left child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the left child is set.
 	 */
-	bool leftIsSet() const {
+	bool isLeftSet() const {
 		return left.get() != nullptr;
 	}
 
 	/*!
+	 * Checks if the right child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the right child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the right child is set.
 	 */
-	bool rightIsSet() const {
+	bool isRightSet() const {
 		return right.get() != nullptr;
 	}
 
 private:
+
+	// The left child node.
 	std::shared_ptr<AbstractStateFormula<T>> left;
+
+	// The right child node.
 	std::shared_ptr<AbstractStateFormula<T>> right;
 
 };
diff --git a/src/formula/csl/Ap.h b/src/formula/csl/Ap.h
index a80f8fdfe..8ab7600fe 100644
--- a/src/formula/csl/Ap.h
+++ b/src/formula/csl/Ap.h
@@ -15,29 +15,37 @@ namespace storm {
 namespace property {
 namespace csl {
 
+// Forward declaration for the interface class.
 template <class T> class Ap;
 
 /*!
- *  @brief Interface class for model checkers that support Ap.
+ * Interface class for model checkers that support Ap.
  *
- *  All model checkers that support the formula class Ap must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class Ap must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IApModelChecker {
     public:
+
+		/*!
+		 * Empty virtual destructor.
+		 */
+		virtual ~IApModelChecker() {
+			// Intentionally left empty
+		}
+
 		/*!
-         *  @brief Evaluates Ap formula within a model checker.
-         *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
-         */
+		 * Evaluates an Ap formula within a model checker.
+		 *
+		 * @param obj Formula object with subformulas.
+		 * @return The modelchecking result of the formula for every state.
+		 */
         virtual storm::storage::BitVector checkAp(const Ap<T>& obj) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract formula tree with atomic proposition as root.
+ * Class for a Csl formula tree with an atomic proposition as root.
  *
  * This class represents the leaves in the formula tree.
  *
@@ -50,19 +58,16 @@ class Ap : public AbstractStateFormula<T> {
 public:
 
 	/*!
-	 * Constructor
+	 * Creates a new atomic proposition leaf, with the given label.
 	 *
-	 * Creates a new atomic proposition leaf, with the label Ap
-	 *
-	 * @param ap The string representing the atomic proposition
+	 * @param ap A string representing the atomic proposition.
 	 */
-	Ap(std::string ap) {
-		this->ap = ap;
+	Ap(std::string ap) : ap(ap) {
+		// Intentionally left empty.
 	}
 
 	/*!
-	 * Destructor.
-	 * At this time, empty...
+	 * Empty virtual destructor.
 	 */
 	virtual ~Ap() {
 		// Intentionally left empty
@@ -71,9 +76,9 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones.
 	 *
-	 * @returns a new AND-object that is identical the called object.
+	 * @returns A new Ap object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractStateFormula<T>> clone() const override {
 		std::shared_ptr<AbstractStateFormula<T>> result(new Ap(this->getAp()));
@@ -93,6 +98,15 @@ public:
 		return modelChecker.template as<IApModelChecker>()->checkAp(*this);
 	}
 
+	/*!
+	 * A string representing the atomic proposition.
+	 *
+	 * @returns A string representing the leaf.
+	 */
+	virtual std::string toString() const override {
+		return getAp();
+	}
+
 	/*! Returns whether the formula is a propositional logic formula.
 	 *  That is, this formula and all its subformulas consist only of And, Or, Not and AP.
 	 *
@@ -103,21 +117,17 @@ public:
 	}
 
 	/*!
-	 * @returns the name of the atomic proposition
+	 * Gets the name of the atomic proposition.
+	 *
+	 * @returns The name of the atomic proposition.
 	 */
 	std::string const & getAp() const {
 		return ap;
 	}
 
-	/*!
-	 * @returns a string representation of the leaf.
-	 *
-	 */
-	virtual std::string toString() const override {
-		return getAp();
-	}
-
 private:
+
+	// The atomic proposition referenced by this leaf.
 	std::string ap;
 
 };
diff --git a/src/formula/csl/CslFilter.h b/src/formula/csl/CslFilter.h
index ef1ec5044..4d92829e5 100644
--- a/src/formula/csl/CslFilter.h
+++ b/src/formula/csl/CslFilter.h
@@ -16,45 +16,88 @@
 
 #include "src/formula/actions/AbstractAction.h"
 
-namespace storm {
-namespace property {
-namespace action {
- template <typename T> class AbstractAction;
-}
-}
-}
-
 namespace storm {
 namespace property {
 namespace csl {
 
+/*!
+ * This is the Csl specific filter.
+ *
+ * It maintains a Csl formula which can be checked against a given model by either calling evaluate() or check().
+ * Additionally it maintains a list of filter actions that are used to further manipulate the modelchecking results and prepare them for output.
+ */
 template <class T>
 class CslFilter : public storm::property::AbstractFilter<T> {
 
+	// Convenience typedef to make the code more readable.
 	typedef typename storm::property::action::AbstractAction<T>::Result Result;
 
 public:
 
+	/*!
+	 * Creates an empty CslFilter, maintaining no Csl formula.
+	 *
+	 * Calling check or evaluate will return an empty result.
+	 */
 	CslFilter() : AbstractFilter<T>(UNDEFINED), child(nullptr), steadyStateQuery(false) {
 		// Intentionally left empty.
 	}
 
+	/*!
+	 * Creates a CslFilter maintaining a Csl formula but containing no actions.
+	 *
+	 * The modelchecking result will be returned or printed as is.
+	 *
+	 * @param child The Csl formula to be maintained.
+	 * @param opt An enum value indicating which kind of scheduler shall be used for path formulas on nondeterministic models.
+	 * @param steadyStateQuery A flag indicating whether this is a steady state query.
+	 */
 	CslFilter(std::shared_ptr<AbstractCslFormula<T>> const & child, OptimizingOperator opt = UNDEFINED, bool steadyStateQuery = false) : AbstractFilter<T>(opt), child(child), steadyStateQuery(steadyStateQuery) {
 		// Intentionally left empty.
 	}
 
+	/*!
+	 * Creates a CslFilter maintaining a Csl formula and containing a single action.
+	 *
+	 * The given action will be applied to the modelchecking result during evaluation.
+	 * Further actions can be added later.
+	 *
+	 * @param child The Csl formula to be maintained.
+	 * @param action The single action to be executed during evaluation.
+	 * @param opt An enum value indicating which kind of scheduler shall be used for path formulas on nondeterministic models.
+	 * @param steadyStateQuery A flag indicating whether this is a steady state query.
+	 */
 	CslFilter(std::shared_ptr<AbstractCslFormula<T>> const & child, std::shared_ptr<action::AbstractAction<T>> const & action, OptimizingOperator opt = UNDEFINED, bool steadyStateQuery = false) : AbstractFilter<T>(action, opt), child(child), steadyStateQuery(steadyStateQuery) {
 		// Intentionally left empty
 	}
 
+	/*!
+	 * Creates a CslFilter using the given parameters.
+	 *
+	 * The given actions will be applied to the modelchecking result in ascending index order during evaluation.
+	 * Further actions can be added later.
+	 *
+	 * @param child The Csl formula to be maintained.
+	 * @param actions A vector conatining the actions that are to be executed during evaluation.
+	 * @param opt An enum value indicating which kind of scheduler shall be used for path formulas on nondeterministic models.
+	 * @param steadyStateQuery A flag indicating whether this is a steady state query.
+	 */
 	CslFilter(std::shared_ptr<AbstractCslFormula<T>> const & child, std::vector<std::shared_ptr<action::AbstractAction<T>>> const & actions, OptimizingOperator opt = UNDEFINED, bool steadyStateQuery = false) : AbstractFilter<T>(actions, opt), child(child), steadyStateQuery(steadyStateQuery) {
 		// Intentionally left empty.
 	}
 
+	/*!
+	 * Empty virtual destructor.
+	 */
 	virtual ~CslFilter() {
 		// Intentionally left empty.
 	}
 
+	/*!
+	 * Calls the modelchecker, retrieves the modelchecking result, applies the filter action one by one and prints out the result.
+	 *
+	 * @param modelchecker The modelchecker to be called.
+	 */
 	void check(storm::modelchecker::csl::AbstractModelChecker<T> const & modelchecker) const {
 
 		// Write out the formula to be checked.
@@ -66,6 +109,12 @@ public:
 
 	}
 
+	/*!
+	 * Calls the modelchecker, retrieves the modelchecking result, applies the filter action one by one and returns the result.
+	 *
+	 * @param modelchecker The modelchecker to be called.
+	 * @returns The result of the sequential application of the filter actions to the modelchecking result.
+	 */
 	Result evaluate(storm::modelchecker::csl::AbstractModelChecker<T> const & modelchecker) const {
 		Result result;
 
@@ -83,6 +132,13 @@ public:
 		return result;
 	}
 
+	/*!
+	 * Returns a textual representation of the filter.
+	 *
+	 * That includes the actions as well as the maintained formula.
+	 *
+	 * @returns A string representing the filter.
+	 */
 	virtual std::string toString() const override {
 		std::string desc = "";
 
@@ -170,30 +226,50 @@ public:
 		return desc;
 	}
 
-	virtual std::string toPrettyString() const override{
-		std::string desc = "Filter: ";
-		desc += "\nActions:";
-		for(auto action : this->actions) {
-			desc += "\n\t" + action->toString();
-		}
-		desc += "\nFormula:\n\t" + child->toString();
-		return desc;
+	/*!
+	 * Gets the child node.
+	 *
+	 * @returns The child node.
+	 */
+	std::shared_ptr<AbstractCslFormula<T>> const & getChild() const {
+		return child;
 	}
 
+	/*!
+	 * Sets the subtree.
+	 *
+	 * @param child The new child.
+	 */
 	void setChild(std::shared_ptr<AbstractCslFormula<T>> const & child) {
 		this->child = child;
 	}
 
-	std::shared_ptr<AbstractCslFormula<T>> const & getChild() const {
-		return child;
+	/*!
+	 * Checks if the child is set, i.e. it does not point to null.
+	 *
+	 * @return True iff the child is set.
+	 */
+	bool isChildSet() const {
+		return child.get() != nullptr;
 	}
 
 private:
 
+	/*!
+	 * Calls the modelchecker for a state formula, retrieves the modelchecking result, applies the filter action one by one and returns the result.
+	 *
+	 * This an internal version of the evaluate method overloading it for the different Csl formula types.
+	 *
+	 * @param modelchecker The modelchecker to be called.
+	 * @param formula The state formula for which the modelchecker will be called.
+	 * @returns The result of the sequential application of the filter actions to the modelchecking result.
+	 */
 	Result evaluate(storm::modelchecker::csl::AbstractModelChecker<T> const & modelchecker, std::shared_ptr<AbstractStateFormula<T>> const & formula) const {
 		// First, get the model checking result.
 		Result result;
 
+		//TODO: Once a modelchecker supporting steady state formulas is implemented, call it here in case steadyStateQuery is set.
+
 		if(this->opt != UNDEFINED) {
 			// If there is an action specifying that min/max probabilities should be computed, call the appropriate method of the model checker.
 			result.stateResult = modelchecker.checkMinMaxOperator(*formula, this->opt == MINIMIZE ? true : false);
@@ -206,6 +282,15 @@ private:
 		return evaluateActions(result, modelchecker);
 	}
 
+	/*!
+	 * Calls the modelchecker for a path formula, retrieves the modelchecking result, applies the filter action one by one and returns the result.
+	 *
+	 * This an internal version of the evaluate method overloading it for the different Csl formula types.
+	 *
+	 * @param modelchecker The modelchecker to be called.
+	 * @param formula The path formula for which the modelchecker will be called.
+	 * @returns The result of the sequential application of the filter actions to the modelchecking result.
+	 */
 	Result evaluate(storm::modelchecker::csl::AbstractModelChecker<T> const & modelchecker, std::shared_ptr<AbstractPathFormula<T>> const & formula) const {
 		// First, get the model checking result.
 		Result result;
@@ -221,6 +306,13 @@ private:
 		return evaluateActions(result, modelchecker);
 	}
 
+	/*!
+	 * Evaluates the filter actions by calling them one by one using the output of each action as the input for the next one.
+	 *
+	 * @param input The modelchecking result in form of a Result struct.
+	 * @param modelchecker The modelchecker that was called to generate the modelchecking result. Needed by some actions.
+	 * @returns The result of the sequential application of the filter actions to the modelchecking result.
+	 */
 	Result evaluateActions(Result result, storm::modelchecker::csl::AbstractModelChecker<T> const & modelchecker) const {
 
 		// Init the state selection and state map vectors.
@@ -238,6 +330,12 @@ private:
 		return result;
 	}
 
+	/*!
+	 * Writes out the given result.
+	 *
+	 * @param result The result of the sequential application of the filter actions to a modelchecking result.
+	 * @param modelchecker The modelchecker that was called to generate the modelchecking result. Needed for legacy support.
+	 */
 	void writeOut(Result const & result, storm::modelchecker::csl::AbstractModelChecker<T> const & modelchecker) const {
 
 		// Test if there is anything to write out.
@@ -302,8 +400,10 @@ private:
 		std::cout << std::endl << "-------------------------------------------" << std::endl;
 	}
 
+	// The Csl formula maintained by this filter.
 	std::shared_ptr<AbstractCslFormula<T>> child;
 
+	// A flag indicating whether this is a steady state query.
 	bool steadyStateQuery;
 };
 
diff --git a/src/formula/csl/Eventually.h b/src/formula/csl/Eventually.h
index 21bdd71b4..6c27dfa75 100644
--- a/src/formula/csl/Eventually.h
+++ b/src/formula/csl/Eventually.h
@@ -1,5 +1,5 @@
 /*
- * Next.h
+ * Globally.h
  *
  *  Created on: 26.12.2012
  *      Author: Christian Dehnert
@@ -16,37 +16,48 @@ namespace storm {
 namespace property {
 namespace csl {
 
+// Forward declaration for the interface class.
 template <class T> class Eventually;
 
 /*!
- *  @brief Interface class for model checkers that support Eventually.
+ * Interface class for model checkers that support Eventually.
  *
- *  All model checkers that support the formula class Eventually must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class Eventually must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IEventuallyModelChecker {
     public:
+
 		/*!
-         *  @brief Evaluates Eventually formula within a model checker.
-         *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
-         */
+		 * Empty virtual destructor.
+		 */
+		virtual ~IEventuallyModelChecker() {
+			// Intentionally left empty.
+		}
+
+		/*!
+		 * Evaluates an Eventually formula within a model checker.
+		 *
+		 * @param obj Formula object with subformulas.
+		 * @param qualitative A flag indicating whether the formula only needs to be evaluated qualitatively, i.e. if the
+		 *                    results are only compared against the bounds 0 and 1.
+		 * @return The modelchecking result of the formula for every state.
+		 */
         virtual std::vector<T> checkEventually(const Eventually<T>& obj, bool qualitative) const = 0;
 };
 
 /*!
  * @brief
- * Class for an abstract (path) formula tree with an Eventually node as root.
+ * Class for a Csl (path) formula tree with an Eventually node as root.
  *
- * Has one Abstract state formula as sub formula/tree.
+ * Has one Csl state formula as sub formula/tree.
  *
  * @par Semantics
- * The formula holds iff eventually \e child holds.
+ * The formula holds iff eventually formula \e child holds.
  *
- * The subtree is seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to nullptr before deletion)
+ * The object has shared ownership of its subtree. If this object is deleted and no other object has a shared
+ * ownership of the subtree it will be deleted as well.
  *
  * @see AbstractPathFormula
  * @see AbstractCslFormula
@@ -57,26 +68,24 @@ class Eventually : public AbstractPathFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor
+	 * Creates an Eventually node without a subnode.
+	 * The resulting object will not represent a complete formula!
 	 */
 	Eventually() : child(nullptr) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor
+	 * Creates an Eventually node using the given parameter.
 	 *
-	 * @param child The child node
+	 * @param child The child formula subtree.
 	 */
 	Eventually(std::shared_ptr<AbstractStateFormula<T>> const & child) : child(child){
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor.
-	 *
-	 * Also deletes the subtree.
-	 * (this behaviour can be prevented by setting the subtrees to nullptr before deletion)
+	 * Empty virtual destructor.
 	 */
 	virtual ~Eventually() {
 		// Intentionally left empty.
@@ -85,13 +94,13 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new Eventually-object that is identical the called object.
+	 * @returns A new Eventually object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractPathFormula<T>> clone() const override {
 		std::shared_ptr<Eventually<T>> result(new Eventually<T>());
-		if (this->childIsSet()) {
+		if (this->isChildSet()) {
 			result->setChild(child->clone());
 		}
 		return result;
@@ -111,7 +120,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "F ";
@@ -120,29 +131,35 @@ public:
 	}
 
 	/*!
-	 * @returns the child node
+	 * Gets the child node.
+	 *
+	 * @returns The child node.
 	 */
 	std::shared_ptr<AbstractStateFormula<T>> const & getChild() const {
 		return child;
 	}
 
 	/*!
-	 * Sets the subtree
-	 * @param child the new child node
+	 * Sets the subtree.
+	 *
+	 * @param child The new child.
 	 */
 	void setChild(std::shared_ptr<AbstractStateFormula<T>> const & child) {
 		this->child = child;
 	}
 
 	/*!
+	 * Checks if the child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the child node is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the child is set.
 	 */
-	bool childIsSet() const {
+	bool isChildSet() const {
 		return child.get() != nullptr;
 	}
 
 private:
+
+	// The child node.
 	std::shared_ptr<AbstractStateFormula<T>> child;
 };
 
diff --git a/src/formula/csl/Globally.h b/src/formula/csl/Globally.h
index e93baeca5..421d9e354 100644
--- a/src/formula/csl/Globally.h
+++ b/src/formula/csl/Globally.h
@@ -1,5 +1,5 @@
 /*
- * Next.h
+ * Globally.h
  *
  *  Created on: 26.12.2012
  *      Author: Christian Dehnert
@@ -16,37 +16,47 @@ namespace storm {
 namespace property {
 namespace csl {
 
+// Forward declaration for the interface class.
 template <class T> class Globally;
 
 /*!
- *  @brief Interface class for model checkers that support Globally.
+ * Interface class for model checkers that support Globally.
  *   
- *  All model checkers that support the formula class Globally must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class Globally must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IGloballyModelChecker {
     public:
+
 		/*!
-         *  @brief Evaluates Globally formula within a model checker.
-         *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
-         */
+		 * Empty virtual destructor.
+		 */
+		virtual ~IGloballyModelChecker() {
+			// Intentionally left empty
+		}
+
+		/*!
+		 * Evaluates a Globally formula within a model checker.
+		 *
+		 * @param obj Formula object with subformulas.
+		 * @param qualitative A flag indicating whether the formula only needs to be evaluated qualitatively, i.e. if the
+		 *                    results are only compared against the bounds 0 and 1.
+		 * @return The modelchecking result of the formula for every state.
+		 */
         virtual std::vector<T> checkGlobally(const Globally<T>& obj, bool qualitative) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract (path) formula tree with a Globally node as root.
+ * Class for a Csl (path) formula tree with a Globally node as root.
  *
- * Has one Abstract state formula as sub formula/tree.
+ * Has one Csl state formula as sub formula/tree.
  *
  * @par Semantics
  * The formula holds iff globally \e child holds.
  *
- * The subtree is seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to nullptr before deletion)
+ * The object has shared ownership of its subtree. If this object is deleted and no other object has a shared
+ * ownership of the subtree it will be deleted as well.
  *
  * @see AbstractPathFormula
  * @see AbstractCslFormula
@@ -57,26 +67,24 @@ class Globally : public AbstractPathFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor
+	 * Creates a Globally node without a subnode.
+	 * The resulting object will not represent a complete formula!
 	 */
 	Globally() : child(nullptr){
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor
+	 * Creates a Globally node using the given parameter.
 	 *
-	 * @param child The child node
+	 * @param child The child formula subtree.
 	 */
 	Globally(std::shared_ptr<AbstractStateFormula<T>> const & child) : child(child){
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor.
-	 *
-	 * Also deletes the subtree.
-	 * (this behaviour can be prevented by setting the subtrees to nullptr before deletion)
+	 * Empty virtual destructor.
 	 */
 	virtual ~Globally() {
 		// Intentionally left empty.
@@ -85,13 +93,13 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new Globally-object that is identical the called object.
+	 * @returns A new Globally object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractPathFormula<T>> clone() const override {
 		std::shared_ptr<Globally<T>> result(new Globally<T>());
-		if (this->childIsSet()) {
+		if (this->isChildSet()) {
 			result->setChild(child->clone());
 		}
 		return result;
@@ -111,7 +119,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "G ";
@@ -120,29 +130,35 @@ public:
 	}
 
 	/*!
-	 * @returns the child node
+	 * Gets the child node.
+	 *
+	 * @returns The child node.
 	 */
 	AbstractStateFormula<T> const & getChild() const {
 		return child;
 	}
 
 	/*!
-	 * Sets the subtree
-	 * @param child the new child node
+	 * Sets the subtree.
+	 *
+	 * @param child The new child.
 	 */
 	void setChild(std::shared_ptr<AbstractStateFormula<T>> const & child) {
 		this->child = child;
 	}
 
 	/*!
+	 * Checks if the child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the child node is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the child is set.
 	 */
-	bool childIsSet() const {
+	bool isChildSet() const {
 		return child.get() != nullptr;
 	}
 
 private:
+
+	// The child node.
 	std::shared_ptr<AbstractStateFormula<T>> child;
 };
 
diff --git a/src/formula/csl/Next.h b/src/formula/csl/Next.h
index 8c86095b8..478247de6 100644
--- a/src/formula/csl/Next.h
+++ b/src/formula/csl/Next.h
@@ -15,37 +15,47 @@ namespace storm {
 namespace property {
 namespace csl {
 
+// Forward declaration for the interface class.
 template <class T> class Next;
 
 /*!
- *  @brief Interface class for model checkers that support Next.
+ * Interface class for model checkers that support Next.
  *   
- *  All model checkers that support the formula class Next must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class Next must inherit
+ * this pure virtual class.
  */
 template <class T>
 class INextModelChecker {
     public:
+
 		/*!
-         *  @brief Evaluates Next formula within a model checker.
-         *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
-         */
+		 * Empty virtual destructor.
+		 */
+		virtual ~INextModelChecker() {
+			// Intentionally left empty
+		}
+
+		/*!
+		 * Evaluates Next formula within a model checker.
+		 *
+		 * @param obj Formula object with subformulas.
+		 * @param qualitative A flag indicating whether the formula only needs to be evaluated qualitatively, i.e. if the
+		 *                    results are only compared against the bounds 0 and 1.
+		 * @return Result of the formula for every node.
+		 */
         virtual std::vector<T> checkNext(const Next<T>& obj, bool qualitative) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract (path) formula tree with a Next node as root.
+ * Class for a Csl (path) formula tree with a Next node as root.
  *
- * Has two Abstract state formulas as sub formulas/trees.
+ * Has two Csl state formulas as sub formulas/trees.
  *
  * @par Semantics
  * The formula holds iff in the next step, \e child holds
  *
- * The subtree is seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to NULL before deletion)
+ * The object has shared ownership of its subtree. If this object is deleted and no other object has a shared
+ * ownership of the subtree it will be deleted as well.
  *
  * @see AbstractPathFormula
  * @see AbstractCslFormula
@@ -56,26 +66,24 @@ class Next : public AbstractPathFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor
+	 * Creates a Next node without a subnode.
+	 * The resulting object will not represent a complete formula!
 	 */
 	Next() : child(nullptr){
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor
+	 * Creates a Next node using the given parameter.
 	 *
-	 * @param child The child node
+	 * @param child The child formula subtree.
 	 */
 	Next(std::shared_ptr<AbstractStateFormula<T>> const & child) : child(child) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor.
-	 *
-	 * Also deletes the subtree.
-	 * (this behavior can be prevented by setting the subtrees to NULL before deletion)
+	 * Empty virtual destructor.
 	 */
 	virtual ~Next() {
 		// Intetionally left empty.
@@ -84,13 +92,13 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new BoundedUntil-object that is identical the called object.
+	 * @returns A new Next object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractPathFormula<T>> clone() const override {
 		std::shared_ptr<Next<T>> result(new Next<T>());
-		if (this->childIsSet()) {
+		if (this->isChildSet()) {
 			result->setChild(child->clone());
 		}
 		return result;
@@ -110,7 +118,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "X ";
@@ -119,29 +129,35 @@ public:
 	}
 
 	/*!
-	 * @returns the child node
+	 * Gets the child node.
+	 *
+	 * @returns The child node.
 	 */
 	std::shared_ptr<AbstractStateFormula<T>> const & getChild() const {
 		return child;
 	}
 
 	/*!
-	 * Sets the subtree
-	 * @param child the new child node
+	 * Sets the subtree.
+	 *
+	 * @param child The new child.
 	 */
 	void setChild(std::shared_ptr<AbstractStateFormula<T>> const & child) {
 		this->child = child;
 	}
 
 	/*!
+	 * Checks if the child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the child node is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the child is set.
 	 */
-	bool childIsSet() const {
+	bool isChildSet() const {
 		return child.get() != nullptr;
 	}
 
 private:
+
+	// The child node.
 	std::shared_ptr<AbstractStateFormula<T>> child;
 };
 
diff --git a/src/formula/csl/Not.h b/src/formula/csl/Not.h
index 9c23323ce..5e382893d 100644
--- a/src/formula/csl/Not.h
+++ b/src/formula/csl/Not.h
@@ -15,34 +15,42 @@ namespace storm {
 namespace property {
 namespace csl {
 
+// Forward declaration for the interface class.
 template <class T> class Not;
 
 /*!
- *  @brief Interface class for model checkers that support Not.
+ * Interface class for model checkers that support Not.
  *   
- *  All model checkers that support the formula class Not must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class Not must inherit
+ * this pure virtual class.
  */
 template <class T>
 class INotModelChecker {
     public:
+
 		/*!
-         *  @brief Evaluates Not formula within a model checker.
-         *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
-         */
+		 * Empty virtual destructor.
+		 */
+		virtual ~INotModelChecker() {
+			// Intentionally left empty
+		}
+
+		/*!
+		 * Evaluates Not formulas within a model checker.
+		 *
+		 * @param obj Formula object with subformulas.
+		 * @return Result of the formula for every node.
+		 */
         virtual storm::storage::BitVector checkNot(const Not<T>& obj) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract formula tree with NOT node as root.
+ * Class for a Csl formula tree with Not node as root.
  *
- * Has one Abstract state formula as sub formula/tree.
+ * Has one Csl state formula as sub formula/tree.
  *
- * The subtree is seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to NULL before deletion)
+ * The object has shared ownership of its subtree. If this object is deleted and no other object has a shared
+ * ownership of the subtree it will be deleted as well.
  *
  * @see AbstractStateFormula
  * @see AbstractCslFormula
@@ -53,25 +61,24 @@ class Not : public AbstractStateFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor
+	 * Creates a Not node without a subnode.
+	 * The resulting object will not represent a complete formula!
 	 */
 	Not() : child(nullptr) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor
-	 * @param child The child node
+	 * Creates a Not node using the given parameter.
+	 *
+	 * @param child The child formula subtree.
 	 */
 	Not(std::shared_ptr<AbstractStateFormula<T>> const & child) : child(child) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Destructor
-	 *
-	 * Also deletes the subtree
-	 * (this behavior can be prevented by setting them to NULL before deletion)
+	 * Empty virtual destructor.
 	 */
 	virtual ~Not() {
 		// Intentionally left empty.
@@ -80,13 +87,13 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new AND-object that is identical the called object.
+	 * @returns A new Not object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractStateFormula<T>> clone() const override {
 		std::shared_ptr<Not<T>> result(new Not<T>());
-		if (this->childIsSet()) {
+		if (this->isChildSet()) {
 			result->setChild(child->clone());
 		}
 		return result;
@@ -106,7 +113,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "!";
@@ -124,29 +133,35 @@ public:
 	}
 
 	/*!
-	 * @returns The child node
+	 * Gets the child node.
+	 *
+	 * @returns The child node.
 	 */
 	std::shared_ptr<AbstractStateFormula<T>> const & getChild() const {
 		return child;
 	}
 
 	/*!
-	 * Sets the subtree
-	 * @param child the new child node
+	 * Sets the subtree.
+	 *
+	 * @param child The new child.
 	 */
 	void setChild(std::shared_ptr<AbstractStateFormula<T>> const & child) {
 		this->child = child;
 	}
 
 	/*!
+	 * Checks if the child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the child node is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the child is set.
 	 */
-	bool childIsSet() const {
+	bool isChildSet() const {
 		return child.get() != nullptr;
 	}
 
 private:
+
+	// The child node.
 	std::shared_ptr<AbstractStateFormula<T>> child;
 };
 
diff --git a/src/formula/csl/Or.h b/src/formula/csl/Or.h
index b6017d4be..d1c1a795c 100644
--- a/src/formula/csl/Or.h
+++ b/src/formula/csl/Or.h
@@ -14,37 +14,45 @@ namespace storm {
 namespace property {
 namespace csl {
 
+// Forward declaration for the interface class.
 template <class T> class Or;
 
 /*!
- *  @brief Interface class for model checkers that support Or.
+ * Interface class for model checkers that support Or.
  *   
- *  All model checkers that support the formula class Or must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class Or must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IOrModelChecker {
 	public:
+
 		/*!
-         *  @brief Evaluates Or formula within a model checker.
-         *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
-         */
+		 * Empty virtual destructor.
+		 */
+		virtual ~IOrModelChecker() {
+			// Intentionally left empty
+		}
+
+		/*!
+		 * Evaluates Or formula within a model checker.
+		 *
+		 * @param obj Formula object with subformulas.
+		 * @return Result of the formula for every node.
+		 */
 		virtual storm::storage::BitVector checkOr(const Or<T>& obj) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract formula tree with OR node as root.
+ * Class for an Csl formula tree with an Or node as root.
  *
- * Has two Abstract state formulas as sub formulas/trees.
+ * Has two state formulas as sub formulas/trees.
  *
- * As OR is commutative, the order is \e theoretically not important, but will influence the order in which
+ * As Or is commutative, the order is \e theoretically not important, but will influence the order in which
  * the model checker works.
  *
- * The subtrees are seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to NULL before deletion)
+ * The object has shared ownership of its subtrees. If this object is deleted and no other object has a shared
+ * ownership of the subtrees they will be deleted as well.
  *
  * @see AbstractStateFormula
  * @see AbstractCslFormula
@@ -55,47 +63,43 @@ class Or : public AbstractStateFormula<T> {
 public:
 
 	/*!
-		 * Empty constructor.
-		 * Will create an OR-node without subnotes. Will not represent a complete formula!
-		 */
-		Or() : left(nullptr), right(nullptr) {
-			// Intentionally left empty.
-		}
+	 * Creates an Or node without subnodes.
+	 * The resulting object will not represent a complete formula!
+	 */
+	Or() : left(nullptr), right(nullptr) {
+		// Intentionally left empty.
+	}
 
-		/*!
-		 * Constructor.
-		 * Creates an OR note with the parameters as subtrees.
-		 *
-		 * @param left The left sub formula
-		 * @param right The right sub formula
-		 */
-		Or(std::shared_ptr<AbstractStateFormula<T>> const & left, std::shared_ptr<AbstractStateFormula<T>> const & right) : left(left), right(right) {
-			// Intentionally left empty.
-		}
+	/*!
+	 * Creates an Or node with the parameters as subtrees.
+	 *
+	 * @param left The left sub formula.
+	 * @param right The right sub formula.
+	 */
+	Or(std::shared_ptr<AbstractStateFormula<T>> const & left, std::shared_ptr<AbstractStateFormula<T>> const & right) : left(left), right(right) {
+		// Intentionally left empty.
+	}
 
-		/*!
-		 * Destructor.
-		 *
-		 * The subtrees are deleted with the object
-		 * (this behavior can be prevented by setting them to NULL before deletion)
-		 */
-		virtual ~Or() {
-			// Intentionally left empty.
-		}
+	/*!
+	 * Empty virtual destructor.
+	 */
+	virtual ~Or() {
+		// Intentionally left empty.
+	}
 
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones.
 	 *
-	 * @returns a new AND-object that is identical the called object.
+	 * @returns A new Or object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractStateFormula<T>> clone() const override {
 		std::shared_ptr<Or<T>> result(new Or());
-		if (this->leftIsSet()) {
+		if (this->isLeftSet()) {
 		  result->setLeft(left->clone());
 		}
-		if (this->rightIsSet()) {
+		if (this->isRightSet()) {
 		  result->setRight(right->clone());
 		}
 		return result;
@@ -115,7 +119,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "(";
@@ -136,55 +142,65 @@ public:
 	}
 
 	/*!
-	 * Sets the left child node.
+	 * Gets the left child node.
 	 *
-	 * @param newLeft the new left child.
+	 * @returns The left child node.
 	 */
-	void setLeft(std::shared_ptr<AbstractStateFormula<T>> const & newLeft) {
-		left = newLeft;
+	std::shared_ptr<AbstractStateFormula<T>> const & getLeft() const {
+		return left;
 	}
 
 	/*!
-	 * Sets the right child node.
+	 * Gets the right child node.
 	 *
-	 * @param newRight the new right child.
+	 * @returns The right child node.
 	 */
-	void setRight(std::shared_ptr<AbstractStateFormula<T>> const & newRight) {
-		right = newRight;
+	std::shared_ptr<AbstractStateFormula<T>> const & getRight() const {
+		return right;
 	}
 
 	/*!
-	 * @returns a pointer to the left child node
+	 * Sets the left child node.
+	 *
+	 * @param newLeft The new left child.
 	 */
-	std::shared_ptr<AbstractStateFormula<T>> const & getLeft() const {
-		return left;
+	void setLeft(std::shared_ptr<AbstractStateFormula<T>> const & newLeft) {
+		left = newLeft;
 	}
 
 	/*!
-	 * @returns a pointer to the right child node
+	 * Sets the right child node.
+	 *
+	 * @param newRight The new right child.
 	 */
-	std::shared_ptr<AbstractStateFormula<T>> const & getRight() const {
-		return right;
+	void setRight(std::shared_ptr<AbstractStateFormula<T>> const & newRight) {
+		right = newRight;
 	}
 
 	/*!
+	 * Checks if the left child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the left child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the left child is set.
 	 */
-	bool leftIsSet() const {
+	bool isLeftSet() const {
 		return left.get() != nullptr;
 	}
 
 	/*!
+	 * Checks if the right child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the right child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the left right is set.
 	 */
-	bool rightIsSet() const {
+	bool isRightSet() const {
 		return right.get() != nullptr;
 	}
 
 private:
+
+	// The left child node.
 	std::shared_ptr<AbstractStateFormula<T>> left;
+
+	// The right child node.
 	std::shared_ptr<AbstractStateFormula<T>> right;
 
 };
diff --git a/src/formula/csl/ProbabilisticBoundOperator.h b/src/formula/csl/ProbabilisticBoundOperator.h
index f0c51af72..a9adc4d6b 100644
--- a/src/formula/csl/ProbabilisticBoundOperator.h
+++ b/src/formula/csl/ProbabilisticBoundOperator.h
@@ -17,39 +17,49 @@ namespace storm {
 namespace property {
 namespace csl {
 
+// Forward declaration for the interface class.
 template <class T> class ProbabilisticBoundOperator;
 
 /*!
- *  @brief Interface class for model checkers that support ProbabilisticBoundOperator.
+ * Interface class for model checkers that support ProbabilisticBoundOperator.
  *
- *  All model checkers that support the formula class PathBoundOperator must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class PathBoundOperator must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IProbabilisticBoundOperatorModelChecker {
     public:
+
+		/*!
+		 * Empty virtual destructor.
+		 */
+		virtual ~IProbabilisticBoundOperatorModelChecker() {
+			// Intentionally left empty
+		}
+
+		/*!
+		 * Evaluates a ProbabilisticBoundOperator within a model checker.
+		 *
+		 * @param obj Formula object with subformulas.
+		 * @return The modelchecking result of the formula for every state.
+		 */
         virtual storm::storage::BitVector checkProbabilisticBoundOperator(const ProbabilisticBoundOperator<T>& obj) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract formula tree with a P (probablistic) operator node over a probability interval
- * as root.
+ * Class for a Csl formula tree with a P (probablistic) bound operator node as root.
  *
- * Has one Abstract path formula as sub formula/tree.
+ * Has one path formula as sub formula/tree.
  *
  * @par Semantics
- * 	  The formula holds iff the probability that the path formula holds is inside the bounds
+ * 	  The formula holds iff the probability that the path formula holds meets the bound
  * 	  specified in this operator
  *
- * The subtree is seen as part of the object and deleted with it
- * (this behavior can be prevented by setting them to NULL before deletion)
- *
+ * The object has shared ownership of its subtree. If this object is deleted and no other object has a shared
+ * ownership of the subtree it will be deleted as well.
  *
  * @see AbstractStateFormula
  * @see AbstractPathFormula
- * @see ProbabilisticOperator
- * @see ProbabilisticNoBoundsOperator
  * @see AbstractCslFormula
  */
 template<class T>
@@ -58,18 +68,19 @@ class ProbabilisticBoundOperator : public AbstractStateFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor
+	 * Creates a ProbabilisticBoundOperator node without a subnode.
+	 * The resulting object will not represent a complete formula!
 	 */
 	ProbabilisticBoundOperator() : comparisonOperator(LESS), bound(0), child(nullptr) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor for non-optimizing operator.
+	 * Creates a ProbabilisticBoundOperator node using the given parameters.
 	 *
 	 * @param comparisonOperator The relation for the bound.
-	 * @param bound The bound for the probability
-	 * @param child The child node
+	 * @param bound The bound for the probability.
+	 * @param child The child formula subtree.
 	 */
 	ProbabilisticBoundOperator(storm::property::ComparisonType comparisonOperator, T bound, std::shared_ptr<AbstractPathFormula<T>> const & child)
 		: comparisonOperator(comparisonOperator), bound(bound), child(child) {
@@ -77,10 +88,7 @@ public:
 	}
 
 	/*!
-	 * Destructor
-	 *
-	 * The subtree is deleted with the object
-	 * (this behavior can be prevented by setting them to NULL before deletion)
+	 * Empty virtual destructor.
 	 */
 	virtual ~ProbabilisticBoundOperator() {
 		// Intentionally left empty.
@@ -89,9 +97,9 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new AND-object that is identical the called object.
+	 * @returns A new ProbabilisticBoundOperator object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractStateFormula<T>> clone() const override {
 		std::shared_ptr<ProbabilisticBoundOperator<T>> result(new ProbabilisticBoundOperator<T>());
@@ -115,7 +123,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "P ";
@@ -134,56 +144,74 @@ public:
 	}
 
 	/*!
-	 * @returns the child node (representation of a formula)
+	 * Gets the child node.
+	 *
+	 * @returns The child node.
 	 */
 	std::shared_ptr<AbstractPathFormula<T>> const & getChild () const {
 		return child;
 	}
 
 	/*!
-	 * Sets the child node
+	 * Sets the subtree.
 	 *
-	 * @param child the path formula that becomes the new child node
+	 * @param child The new child.
 	 */
 	void setChild(std::shared_ptr<AbstractPathFormula<T>> const & child) {
 		this->child = child;
 	}
 
 	/*!
+	 * Checks if the child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the path formula is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the child is set.
 	 */
-	bool childIsSet() const {
+	bool isChildSet() const {
 		return child.get() != nullptr;
 	}
 
 	/*!
-	 * @returns the comparison relation
+	 * Gets the comparison operator.
+	 *
+	 * @returns An enum value representing the comparison relation.
 	 */
 	storm::property::ComparisonType const getComparisonOperator() const {
 		return comparisonOperator;
 	}
 
+	/*!
+	 * Sets the comparison operator.
+	 *
+	 * @param comparisonOperator An enum value representing the new comparison relation.
+	 */
 	void setComparisonOperator(storm::property::ComparisonType comparisonOperator) {
 		this->comparisonOperator = comparisonOperator;
 	}
 
 	/*!
-	 * @returns the bound for the measure
+	 * Gets the bound which the probability that the path formula holds has to obey.
+	 *
+	 * @returns The probability bound.
 	 */
 	T const & getBound() const {
 		return bound;
 	}
 
 	/*!
-	 * Sets the interval in which the probability that the path formula holds may lie in.
+	 * Sets the bound which the probability that the path formula holds has to obey.
 	 *
-	 * @param bound The bound for the measure
+	 * @param bound The new probability bound.
 	 */
 	void setBound(T const & bound) {
 		this->bound = bound;
 	}
 
+	/*!
+	 * Checks if the bound is met by the given value.
+	 *
+	 * @param value The value to test against the bound.
+	 * @returns True iff value <comparisonOperator> bound holds.
+	 */
 	bool meetsBound(T const & value) const {
 		switch (comparisonOperator) {
 		case LESS: return value < bound; break;
@@ -195,8 +223,14 @@ public:
 	}
 
 private:
+
+	// The operator used to indicate the kind of bound that is to be met.
 	storm::property::ComparisonType comparisonOperator;
+
+	// The probability bound.
 	T bound;
+
+	// The path formula for which the probability to be satisfied has to meet the bound.
 	std::shared_ptr<AbstractPathFormula<T>> child;
 };
 
diff --git a/src/formula/csl/SteadyStateBoundOperator.h b/src/formula/csl/SteadyStateBoundOperator.h
index 3c664f05a..4ca8a2cba 100644
--- a/src/formula/csl/SteadyStateBoundOperator.h
+++ b/src/formula/csl/SteadyStateBoundOperator.h
@@ -15,37 +15,45 @@ namespace storm {
 namespace property {
 namespace csl {
 
+// Forward declaration for the interface class.
 template <class T> class SteadyStateBoundOperator;
 
 /*!
- *  @brief Interface class for model checkers that support SteadyStateOperator.
+ * Interface class for model checkers that support SteadyStateOperator.
  *   
- *  All model checkers that support the formula class SteadyStateOperator must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class SteadyStateOperator must inherit
+ * this pure virtual class.
  */
 template <class T>
 class ISteadyStateBoundOperatorModelChecker {
     public:
+
 		/*!
-         *  @brief Evaluates SteadyStateOperator formula within a model checker.
+		 * Empty virtual destructor.
+		 */
+		virtual ~ISteadyStateBoundOperatorModelChecker() {
+			// Intentionally left empty
+		}
+
+		/*!
+         * Evaluates a SteadyStateOperator formula within a model checker.
          *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
+         * @param obj Formula object with subformulas.
+         * @return The modelchecking result of the formula for every state.
          */
         virtual storm::storage::BitVector checkSteadyStateBoundOperator(const SteadyStateBoundOperator<T>& obj) const = 0;
 };
 
 /*!
- * @brief
- * Class for an Abstract (path) formula tree with a SteadyStateOperator node as root.
+ * Class for a Csl formula tree with a SteadyStateOperator node as root.
  *
- * Has two Abstract state formulas as sub formulas/trees.
+ * Has two state formulas as sub formulas/trees.
  *
  * @par Semantics
- * The formula holds iff \e child holds  SteadyStateOperator step, \e child holds
+ * The formula holds iff the long-run probability of being in a state satisfying \e child meets the \e bound specified in this operator.
  *
- * The subtree is seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to NULL before deletion)
+ * The object has shared ownership of its subtree. If this object is deleted and no other object has a shared
+ * ownership of the subtree it will be deleted as well.
  *
  * @see AbstractPathFormula
  * @see AbstractCslFormula
@@ -56,29 +64,27 @@ class SteadyStateBoundOperator : public AbstractStateFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor
+	 * Creates a SteadyStateBoundOperator node without a subnode.
+	 * The resulting object will not represent a complete formula!
 	 */
-	SteadyStateBoundOperator() : comparisonOperator(LESS), bound(storm::utility::constantZero<T>()), stateFormula(nullptr) {
+	SteadyStateBoundOperator() : comparisonOperator(LESS), bound(storm::utility::constantZero<T>()), child(nullptr) {
 		// Intentionally left empty
 	}
 
 	/*!
-	 * Constructor
+	 * Creates a SteadyStateBoundOperator node using the given parameters.
 	 *
 	 * @param comparisonOperator The relation for the bound.
-	 * @param bound The bound for the probability
-	 * @param stateFormula The child node
+	 * @param bound The bound for the probability.
+	 * @param child The child formula subtree.
 	 */
-	SteadyStateBoundOperator(storm::property::ComparisonType comparisonOperator, T bound, std::shared_ptr<AbstractStateFormula<T>> const & stateFormula)
-		: comparisonOperator(comparisonOperator), bound(bound), stateFormula(stateFormula) {
+	SteadyStateBoundOperator(storm::property::ComparisonType comparisonOperator, T bound, std::shared_ptr<AbstractStateFormula<T>> const & child)
+		: comparisonOperator(comparisonOperator), bound(bound), child(child) {
 		// Intentionally left empty
 	}
 
 	/*!
-	 * Destructor
-	 *
-	 * The subtree is deleted with the object
-	 * (this behavior can be prevented by setting them to NULL before deletion)
+	 * Empty virtual destructor.
 	 */
 	virtual ~SteadyStateBoundOperator() {
 		// Intentionally left empty.
@@ -87,13 +93,13 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new BoundedUntil-object that is identical the called object.
+	 * @returns A new SteadyStateBoundOperator object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractStateFormula<T>> clone() const override {
 		std::shared_ptr<SteadyStateBoundOperator<T>> result(new SteadyStateBoundOperator<T>());
-		result->setStateFormula(stateFormula->clone());
+		result->setChild(child->clone());
 		return result;
 	}
 
@@ -111,7 +117,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "S ";
@@ -123,62 +131,80 @@ public:
 		}
 		result += std::to_string(bound);
 		result += " (";
-		result += stateFormula->toString();
+		result += child->toString();
 		result += ")";
 		return result;
 	}
 
 	/*!
-	 * @returns the child node (representation of a formula)
+	 * Gets the child node.
+	 *
+	 * @returns The child node.
 	 */
-	std::shared_ptr<AbstractStateFormula<T>> const & getStateFormula () const {
-		return stateFormula;
+	std::shared_ptr<AbstractStateFormula<T>> const & getChild () const {
+		return child;
 	}
 
 	/*!
-	 * Sets the child node
+	 * Sets the subtree.
 	 *
-	 * @param stateFormula the state formula that becomes the new child node
+	 * @param child The new child.
 	 */
-	void setStateFormula(std::shared_ptr<AbstractStateFormula<T>> const & stateFormula) {
-		this->stateFormula = stateFormula;
+	void setChild(std::shared_ptr<AbstractStateFormula<T>> const & child) {
+		this->child = child;
 	}
 
 	/*!
+	 * Checks if the child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the state formula is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the child is set.
 	 */
-	bool stateFormulaIsSet() const {
-		return stateFormula.get() != nullptr;
+	bool isChildSet() const {
+		return child.get() != nullptr;
 	}
 
 	/*!
-	 * @returns the comparison relation
+	 * Gets the comparison operator.
+	 *
+	 * @returns An enum value representing the comparison relation.
 	 */
 	ComparisonType const getComparisonOperator() const {
 		return comparisonOperator;
 	}
 
+	/*!
+	 * Sets the comparison operator.
+	 *
+	 * @param comparisonOperator An enum value representing the new comparison relation.
+	 */
 	void setComparisonOperator(ComparisonType comparisonOperator) {
 		this->comparisonOperator = comparisonOperator;
 	}
 
 	/*!
-	 * @returns the bound for the measure
+	 * Gets the bound which the steady state probability has to obey.
+	 *
+	 * @returns The probability bound.
 	 */
 	T const & getBound() const {
 		return bound;
 	}
 
 	/*!
-	 * Sets the interval in which the probability that the path formula holds may lie in.
+	 * Sets the bound which the steady state probability has to obey.
 	 *
-	 * @param bound The bound for the measure
+	 * @param bound The new probability bound.
 	 */
 	void setBound(T const & bound) {
 		this->bound = bound;
 	}
 
+	/*!
+	 * Checks if the bound is met by the given value.
+	 *
+	 * @param value The value to test against the bound.
+	 * @returns True iff value <comparisonOperator> bound holds.
+	 */
 	bool meetsBound(T value) const {
 		switch (comparisonOperator) {
 		case LESS: return value < bound; break;
@@ -190,9 +216,15 @@ public:
 	}
 
 private:
+
+	// The operator used to indicate the kind of bound that is to be met.
 	ComparisonType comparisonOperator;
+
+	// The probability bound.
 	T bound;
-	std::shared_ptr<AbstractStateFormula<T>> stateFormula;
+
+	// The state formula for whose state the long-run probability has to meet the bound.
+	std::shared_ptr<AbstractStateFormula<T>> child;
 };
 
 } //namespace csl
diff --git a/src/formula/csl/TimeBoundedEventually.h b/src/formula/csl/TimeBoundedEventually.h
index e4c6aa483..785a1677a 100644
--- a/src/formula/csl/TimeBoundedEventually.h
+++ b/src/formula/csl/TimeBoundedEventually.h
@@ -15,45 +15,77 @@ namespace storm {
 namespace property {
 namespace csl {
 
+// Forward declaration for the interface class.
 template<class T> class TimeBoundedEventually;
 
 /*!
- *  @brief Interface class for model checkers that support TimeBoundedEventually.
+ * Interface class for model checkers that support TimeBoundedEventually.
  *
- *  All model checkers that support the formula class BoundedEventually must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class TimeBoundedEventually must inherit
+ * this pure virtual class.
  */
 template <class T>
 class ITimeBoundedEventuallyModelChecker {
     public:
+
+		/*!
+		 * Empty virtual destructor.
+		 */
+		virtual ~ITimeBoundedEventuallyModelChecker() {
+			// Intentionally left empty
+		}
+
 		/*!
-         *  @brief Evaluates TimeBoundedUntil formula within a model checker.
-         *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
-         */
+		 * Evaluates a TimeBoundedEventually formula within a model checker.
+		 *
+		 * @param obj Formula object with subformulas.
+		 * @param qualitative A flag indicating whether the formula only needs to be evaluated qualitatively, i.e. if the
+		 *                    results are only compared against the bounds 0 and 1.
+		 * @return The modelchecking result of the formula for every state.
+		 */
         virtual std::vector<T> checkTimeBoundedEventually(const TimeBoundedEventually<T>& obj, bool qualitative) const = 0;
 };
 
-
+/*!
+ * Class for a Csl (path) formula tree with a TimeBoundedEventually node as root.
+ *
+ * Has one state formula as subformula/tree.
+ *
+ * @par Semantics
+ * The formula holds iff formula \e child holds within the given time interval [lowerBound, upperBound].
+ *
+ * The object has shared ownership of its subtree. If this object is deleted and no other object has a shared
+ * ownership of the subtree it will be deleted as well.
+ *
+ * @see AbstractPathFormula
+ * @see AbstractCslFormula
+ */
 template<class T>
 class TimeBoundedEventually: public AbstractPathFormula<T> {
 public:
 
-	/**
-	 * Simple constructor: Only sets the bounds
-	 *
-	 * @param lowerBound
-	 * @param upperBound
+	/*!
+	 * Creates a TimeBoundedEventually node without a subnode.
+	 * The resulting object will not represent a complete formula!
 	 */
-	TimeBoundedEventually(T lowerBound, T upperBound) : child(nullptr) {
-		setInterval(lowerBound, upperBound);
+	TimeBoundedEventually() : lowerBound(0), upperBound(0), child(nullptr) {
+		// Intentionally left empty.
 	}
 
+	/*!
+	 * Creates a TimeBoundedEventually node using the given parameters.
+	 *
+	 * @param lowerBound The lower bound of the admissable time interval.
+	 * @param upperBound The upper bound of the admissable time interval.
+	 * @param child The child formula subtree.
+	 */
 	TimeBoundedEventually(T lowerBound, T upperBound, std::shared_ptr<AbstractStateFormula<T>> const & child) : child(child) {
 		setInterval(lowerBound, upperBound);
 	}
 
+	/*!
+	 * Empty virtual destructor.
+	 */
 	virtual ~TimeBoundedEventually() {
 		// Intentionally left empty.
 	}
@@ -61,13 +93,13 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new BoundedUntil-object that is identical the called object.
+	 * @returns A new TimeBoundedEventually object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractPathFormula<T>> clone() const override {
 		std::shared_ptr<TimeBoundedEventually<T>> result(new TimeBoundedEventually<T>(lowerBound, upperBound));
-		if (this->childIsSet()) {
+		if (this->isChildSet()) {
 			result->setChild(child->clone());
 		}
 		return result;
@@ -87,7 +119,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "F";
@@ -106,50 +140,55 @@ public:
 	}
 
 	/*!
-	 * @returns the child node
+	 * Gets the child node.
+	 *
+	 * @returns The child node.
 	 */
 	std::shared_ptr<AbstractStateFormula<T>> const & getChild() const {
 		return child;
 	}
 
 	/*!
-	 * Sets the subtree
-	 * @param child the new child node
+	 * Sets the subtree.
+	 *
+	 * @param child The new child.
 	 */
 	void setChild(std::shared_ptr<AbstractStateFormula<T>> const & child) {
 		this->child = child;
 	}
 
 	/*!
+	 * Checks if the child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the child is set.
 	 */
-	bool childIsSet() const {
+	bool isChildSet() const {
 		return child.get() != nullptr;
 	}
 
-	/**
-	 * Getter for lowerBound attribute
+	/*!
+	 * Get the lower time bound.
 	 *
-	 * @return lower bound of the operator.
+	 * @return The lower time bound.
 	 */
 	T const & getLowerBound() const {
 		return lowerBound;
 	}
 
-	/**
-	 * Getter for upperBound attribute
-	 * @return upper bound of the operator.
+	/*!
+	 * Get the upper time bound.
+	 *
+	 * @return The upper time bound.
 	 */
 	T const & getUpperBound() const {
 		return upperBound;
 	}
 
-	/**
-	 * Set the time interval for the time bounded operator
+	/*!
+	 * Set the time interval for the time bounded operator.
 	 *
-	 * @param lowerBound
-	 * @param upperBound
+	 * @param lowerBound The new lower time bound.
+	 * @param upperBound The new upper time bound.
 	 * @throw InvalidArgumentException if the lower bound is larger than the upper bound.
 	 */
 	void setInterval(T lowerBound, T upperBound) {
@@ -161,8 +200,15 @@ public:
 	}
 
 private:
+
+	// The child node.
 	std::shared_ptr<AbstractStateFormula<T>> child;
-	T lowerBound, upperBound;
+
+	// The lower time bound.
+	T lowerBound;
+
+	// The upper time bound.
+	T upperBound;
 };
 
 } /* namespace csl */
diff --git a/src/formula/csl/TimeBoundedUntil.h b/src/formula/csl/TimeBoundedUntil.h
index 170ddf54a..5e27edd37 100644
--- a/src/formula/csl/TimeBoundedUntil.h
+++ b/src/formula/csl/TimeBoundedUntil.h
@@ -15,55 +15,78 @@ namespace storm {
 namespace property {
 namespace csl {
 
+// Forward declaration for the interface class.
 template <class T> class TimeBoundedUntil;
 
 /*!
- *  @brief Interface class for model checkers that support TimeBoundedUntil.
+ * Interface class for model checkers that support TimeBoundedUntil.
  *
- *  All model checkers that support the formula class BoundedEventually must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class TimeBoundedUntil must inherit
+ * this pure virtual class.
  */
 template <class T>
 class ITimeBoundedUntilModelChecker {
     public:
+
+		/*!
+		 * Empty virtual destructor.
+		 */
+		virtual ~ITimeBoundedUntilModelChecker() {
+			// Intentionally left empty
+		}
+
 		/*!
-         *  @brief Evaluates TimeBoundedUntil formula within a model checker.
-         *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
-         */
+		 * Evaluates a TimeBoundedUntil formula within a model checker.
+		 *
+		 * @param obj Formula object with subformulas.
+		 * @param qualitative A flag indicating whether the formula only needs to be evaluated qualitatively, i.e. if the
+		 *                    results are only compared against the bounds 0 and 1.
+		 * @return The modelchecking result of the formula for every state.
+		 */
         virtual std::vector<T> checkTimeBoundedUntil(const TimeBoundedUntil<T>& obj, bool qualitative) const = 0;
 };
 
+
+/*!
+ * Class for a Csl (path) formula tree with a TimeBoundedUntil node as root.
+ *
+ * Has two state formulas as subformulas/trees.
+ *
+ * @par Semantics
+ * The formula holds iff formula \e right holds within the given time interval [lowerBound, upperBound] and \e left holds
+ * in each point in time before that.
+ *
+ * The object has shared ownership of its subtree. If this object is deleted and no other object has a shared
+ * ownership of the subtree it will be deleted as well.
+ *
+ * @see AbstractPathFormula
+ * @see AbstractCslFormula
+ */
 template <class T>
 class TimeBoundedUntil: public AbstractPathFormula<T> {
 public:
 
-	/**
-	 * Constructor providing bounds only;
-	 * Sub formulas are set to null.
-	 *
-	 * @param lowerBound
-	 * @param upperBound
+	/*!
+	 * Creates a TimeBoundedUntil node without a subnode.
+	 * The resulting object will not represent a complete formula!
 	 */
-	TimeBoundedUntil(T lowerBound, T upperBound) : left(nullptr), right(nullptr) {
+	TimeBoundedUntil() : lowerBound(0), upperBound(0), left(nullptr), right(nullptr) {
 		setInterval(lowerBound, upperBound);
 	}
 
-
-	/**
-	 * Full constructor
-	 * @param lowerBound
-	 * @param upperBound
-	 * @param left
-	 * @param right
+	/*!
+	 * Creates a TimeBoundedUntil node using the given parameters.
+	 *
+	 * @param lowerBound The lower bound of the admissable time interval.
+	 * @param upperBound The upper bound of the admissable time interval.
+	 * @param child The child formula subtree.
 	 */
 	TimeBoundedUntil(T lowerBound, T upperBound, std::shared_ptr<AbstractStateFormula<T>> const & left, std::shared_ptr<AbstractStateFormula<T>> const & right) : left(left), right(right) {
 		setInterval(lowerBound, upperBound);
 	}
 
 	/*!
-	 * Destructor
+	 * Empty virtual destructor.
 	 */
 	virtual ~TimeBoundedUntil() {
 		// Intentionally left empty.
@@ -72,16 +95,16 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new BoundedUntil-object that is identical the called object.
+	 * @returns A new TimeBoundedUntil object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractPathFormula<T>> clone() const override {
 		std::shared_ptr<TimeBoundedUntil<T>> result(new TimeBoundedUntil<T>(lowerBound, upperBound));
-		if (this->leftIsSet()) {
+		if (this->isLeftSet()) {
 			result->setLeft(left->clone());
 		}
-		if (this->rightIsSet()) {
+		if (this->isRightSet()) {
 			result->setRight(right->clone());
 		}
 		return result;
@@ -102,7 +125,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = left->toString();
@@ -122,65 +147,72 @@ public:
 	}
 
 	/*!
-	 * Sets the left child node.
+	 * Gets the left child node.
 	 *
-	 * @param newLeft the new left child.
+	 * @returns The left child node.
 	 */
-	void setLeft(std::shared_ptr<AbstractStateFormula<T>> const & newLeft) {
-		left = newLeft;
+	std::shared_ptr<AbstractStateFormula<T>> const & getLeft() const {
+		return left;
 	}
 
 	/*!
-	 * Sets the right child node.
+	 * Gets the right child node.
 	 *
-	 * @param newRight the new right child.
+	 * @returns The right child node.
 	 */
-	void setRight(std::shared_ptr<AbstractStateFormula<T>> const & newRight) {
-		right = newRight;
+	std::shared_ptr<AbstractStateFormula<T>> const & getRight() const {
+		return right;
 	}
 
 	/*!
-	 * @returns a pointer to the left child node
+	 * Sets the left child node.
+	 *
+	 * @param newLeft The new left child.
 	 */
-	std::shared_ptr<AbstractStateFormula<T>> const & getLeft() const {
-		return left;
+	void setLeft(std::shared_ptr<AbstractStateFormula<T>> const & newLeft) {
+		left = newLeft;
 	}
 
 	/*!
-	 * @returns a pointer to the right child node
+	 * Sets the right child node.
+	 *
+	 * @param newRight The new right child.
 	 */
-	std::shared_ptr<AbstractStateFormula<T>> const & getRight() const {
-		return right;
+	void setRight(std::shared_ptr<AbstractStateFormula<T>> const & newRight) {
+		right = newRight;
 	}
 
 	/*!
+	 * Checks if the left child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the left child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the left child is set.
 	 */
-	bool leftIsSet() const {
+	bool isLeftSet() const {
 		return left.get() != nullptr;
 	}
 
 	/*!
+	 * Checks if the right child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the right child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the right child is set.
 	 */
-	bool rightIsSet() const {
+	bool isRightSet() const {
 		return right.get() != nullptr;
 	}
 
-	/**
-	 * Getter for lowerBound attribute
+	/*!
+	 * Get the lower time bound.
 	 *
-	 * @return lower bound of the operator.
+	 * @return The lower time bound.
 	 */
 	T const & getLowerBound() const {
 		return lowerBound;
 	}
 
-	/**
-	 * Getter for upperBound attribute
-	 * @return upper bound of the operator.
+	/*!
+	 * Get the upper time bound.
+	 *
+	 * @return The upper time bound.
 	 */
 	T const & getUpperBound() const {
 		return upperBound;
@@ -189,8 +221,8 @@ public:
 	/**
 	 * Set the time interval for the time bounded operator
 	 *
-	 * @param lowerBound
-	 * @param upperBound
+	 * @param lowerBound The new lower time bound.
+	 * @param upperBound The new upper time bound.
 	 * @throw InvalidArgumentException if the lower bound is larger than the upper bound.
 	 */
 	void setInterval(T lowerBound, T upperBound) {
@@ -202,9 +234,18 @@ public:
 	}
 
 private:
+
+	// The left child node.
 	std::shared_ptr<AbstractStateFormula<T>> left;
+
+	// The right child node.
 	std::shared_ptr<AbstractStateFormula<T>> right;
-	T lowerBound, upperBound;
+
+	// The lower time bound.
+	T lowerBound;
+
+	// The upper time bound.
+	T upperBound;
 };
 
 } /* namespace csl */
diff --git a/src/formula/csl/Until.h b/src/formula/csl/Until.h
index 8d2446489..8db1fa7d6 100644
--- a/src/formula/csl/Until.h
+++ b/src/formula/csl/Until.h
@@ -15,38 +15,49 @@ namespace storm {
 namespace property {
 namespace csl {
 
+// Forward declaration for the interface class.
 template <class T> class Until;
 
 /*!
- *  @brief Interface class for model checkers that support Until.
+ * Interface class for model checkers that support Until.
  *
- *  All model checkers that support the formula class Until must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class Until must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IUntilModelChecker {
     public:
+
+		/*!
+		 * Empty virtual destructor.
+		 */
+		virtual ~IUntilModelChecker() {
+			// Intentionally left empty
+		}
+
 		/*!
-         *  @brief Evaluates Until formula within a model checker.
-         *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
-         */
+		 * Evaluates an Until formula within a model checker.
+		 *
+		 * @param obj Formula object with subformulas.
+		 * @param qualitative A flag indicating whether the formula only needs to be evaluated qualitatively, i.e. if the
+		 *                    results are only compared against the bounds 0 and 1.
+		 * @return The modelchecking result of the formula for every state.
+		 */
         virtual std::vector<T> checkUntil(const Until<T>& obj, bool qualitative) const = 0;
 };
 
 /*!
  * @brief
- * Class for an abstract (path) formula tree with an Until node as root.
+ * Class for a Csl (path) formula tree with an Until node as root.
  *
- * Has two Abstract state formulas as sub formulas/trees.
+ * Has two state formulas as sub formulas/trees.
  *
  * @par Semantics
  * The formula holds iff eventually, formula \e right (the right subtree) holds, and before,
  * \e left holds always.
  *
- * The subtrees are seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to NULL before deletion)
+ * The object has shared ownership of its subtrees. If this object is deleted and no other object has a shared
+ * ownership of the subtrees they will be deleted as well.
  *
  * @see AbstractPathFormula
  * @see AbstractCslFormula
@@ -55,28 +66,27 @@ template <class T>
 class Until : public AbstractPathFormula<T> {
 
 public:
+
 	/*!
-	 * Empty constructor
+	 * Creates an Until node without subnodes.
+	 * The resulting object will not represent a complete formula!
 	 */
 	Until() : left(nullptr), right(nullptr){
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor
+	 * Creates an Until node using the given parameters.
 	 *
-	 * @param left The left formula subtree
-	 * @param right The left formula subtree
+	 * @param left The left formula subtree.
+	 * @param right The right formula subtree.
 	 */
 	Until(std::shared_ptr<AbstractStateFormula<T>> const & left, std::shared_ptr<AbstractStateFormula<T>> const & right) : left(left), right(right){
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Destructor.
-	 *
-	 * Also deletes the subtrees.
-	 * (this behaviour can be prevented by setting the subtrees to NULL before deletion)
+	 * Empty virtual destructor.
 	 */
 	virtual ~Until() {
 		// Intentionally left empty.
@@ -85,16 +95,16 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new BoundedUntil-object that is identical the called object.
+	 * @returns A new Until object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractPathFormula<T>> clone() const override {
 		std::shared_ptr<Until<T>> result(new Until());
-		if (this->leftIsSet()) {
+		if (this->isLeftSet()) {
 		  result->setLeft(left->clone());
 		}
-		if (this->rightIsSet()) {
+		if (this->isRightSet()) {
 		  result->setRight(left->clone());
 		}
 		return result;
@@ -114,7 +124,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = left->toString();
@@ -124,55 +136,65 @@ public:
 	}
 
 	/*!
-	 * Sets the left child node.
+	 * Gets the left child node.
 	 *
-	 * @param newLeft the new left child.
+	 * @returns The left child node.
 	 */
-	void setLeft(std::shared_ptr<AbstractStateFormula<T>> const & newLeft) {
-		left = newLeft;
+	std::shared_ptr<AbstractStateFormula<T>> const & getLeft() const {
+		return left;
 	}
 
 	/*!
-	 * Sets the right child node.
+	 * Gets the right child node.
 	 *
-	 * @param newRight the new right child.
+	 * @returns The right child node.
 	 */
-	void setRight(std::shared_ptr<AbstractStateFormula<T>> const & newRight) {
-		right = newRight;
+	std::shared_ptr<AbstractStateFormula<T>> const & getRight() const {
+		return right;
 	}
 
 	/*!
-	 * @returns a pointer to the left child node
+	 * Sets the left child node.
+	 *
+	 * @param newLeft The new left child.
 	 */
-	std::shared_ptr<AbstractStateFormula<T>> const & getLeft() const {
-		return left;
+	void setLeft(std::shared_ptr<AbstractStateFormula<T>> const & newLeft) {
+		left = newLeft;
 	}
 
 	/*!
-	 * @returns a pointer to the right child node
+	 * Sets the right child node.
+	 *
+	 * @param newRight The new right child.
 	 */
-	std::shared_ptr<AbstractStateFormula<T>> const & getRight() const {
-		return right;
+	void setRight(std::shared_ptr<AbstractStateFormula<T>> const & newRight) {
+		right = newRight;
 	}
 
 	/*!
+	 * Checks if the left child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the left child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the left child is set.
 	 */
-	bool leftIsSet() const {
+	bool isLeftSet() const {
 		return left.get() != nullptr;
 	}
 
 	/*!
+	 * Checks if the right child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the right child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the right child is set.
 	 */
-	bool rightIsSet() const {
+	bool isRightSet() const {
 		return right.get() != nullptr;
 	}
 
 private:
+
+	// The left child node.
 	std::shared_ptr<AbstractStateFormula<T>> left;
+
+	// The right child node.
 	std::shared_ptr<AbstractStateFormula<T>> right;
 };
 
diff --git a/src/formula/ltl/AbstractLtlFormula.h b/src/formula/ltl/AbstractLtlFormula.h
index 1c4ef1403..3605779be 100644
--- a/src/formula/ltl/AbstractLtlFormula.h
+++ b/src/formula/ltl/AbstractLtlFormula.h
@@ -17,18 +17,33 @@ namespace property {
 namespace ltl {
 
 /*!
- * Interface class for all LTL root formulas.
+ * This is the abstract base class for all Ltl formulas.
+ *
+ * @note While formula classes do have copy constructors using a copy constructor
+ *       will yield a formula objects whose formula subtree consists of the same objects
+ *       as the original formula. The ownership of the formula tree will be shared between
+ *       the original and the copy.
  */
 template <class T>
 class AbstractLtlFormula : public virtual storm::property::AbstractFormula<T> {
 public:
-	/**
-	 * Empty destructor
+
+	/*!
+	 * The virtual destructor.
 	 */
 	virtual ~AbstractLtlFormula() {
 		// Intentionally left empty
 	}
 
+	/*!
+	 * Clones the called object.
+	 *
+	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 *
+	 * @returns A deep copy of the called object.
+	 */
+	virtual std::shared_ptr<AbstractLtlFormula<T>> clone() const = 0;
+
 	/*!
 	 * Calls the model checker to check this formula.
 	 * Needed to infer the correct type of formula class.
@@ -41,15 +56,6 @@ public:
 	 * @returns A vector indicating the probability that the formula holds for each state.
 	 */
 	virtual std::vector<T> check(const storm::modelchecker::ltl::AbstractModelChecker<T>& modelChecker) const = 0;
-
-	/*!
-	 * Clones the called object.
-	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
-	 *
-	 * @returns a new AND-object that is identical the called object.
-	 */
-	virtual std::shared_ptr<AbstractLtlFormula<T>> clone() const = 0;
 };
 
 } /* namespace ltl */
diff --git a/src/formula/ltl/And.h b/src/formula/ltl/And.h
index 06fc83cae..67656ef9b 100644
--- a/src/formula/ltl/And.h
+++ b/src/formula/ltl/And.h
@@ -16,17 +16,26 @@ namespace storm {
 namespace property {
 namespace ltl {
 
+// Forward declaration for the interface class.
 template <class T> class And;
 
 /*!
- *	@brief Interface class for model checkers that support And.
+ * Interface class for model checkers that support And.
  *
- *	All model checkers that support the formula class And must inherit
- *	this pure virtual class.
+ * All model checkers that support the formula class And must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IAndModelChecker {
 	public:
+
+		/*!
+		 * Empty virtual destructor.
+		 */
+		virtual ~IAndModelChecker() {
+			// Intentionally left empty
+		}
+
 		/*!
 		 *	@brief Evaluates And formula within a model checker.
 		 *
@@ -37,16 +46,15 @@ class IAndModelChecker {
 };
 
 /*!
- * @brief
- * Class for an abstract formula tree with AND node as root.
+ * Class for an Ltl formula tree with And node as root.
  *
- * Has two Abstract LTL formulas as sub formulas/trees.
+ * Has two Ltl formulas as sub formulas/trees.
  *
- * As AND is commutative, the order is \e theoretically not important, but will influence the order in which
+ * As And is commutative, the order is \e theoretically not important, but will influence the order in which
  * the model checker works.
  *
- * The subtrees are seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to NULL before deletion)
+ * The object has shared ownership of its subtrees. If this object is deleted and no other object has a shared
+ * ownership of the subtrees they will be deleted as well.
  *
  * @see AbstractLtlFormula
  */
@@ -56,29 +64,25 @@ class And : public AbstractLtlFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor.
-	 * Will create an AND-node without subnotes. Will not represent a complete formula!
+	 * Creates an And node without subnodes.
+	 * The resulting object will not represent a complete formula!
 	 */
 	And() : left(nullptr), right(nullptr){
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor.
-	 * Creates an AND note with the parameters as subtrees.
+	 * Creates an And node with the parameters as subtrees.
 	 *
-	 * @param left The left sub formula
-	 * @param right The right sub formula
+	 * @param left The left sub formula.
+	 * @param right The right sub formula.
 	 */
 	And(std::shared_ptr<AbstractLtlFormula<T>> left, std::shared_ptr<AbstractLtlFormula<T>> right) : left(left), right(right) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Destructor.
-	 *
-	 * The subtrees are deleted with the object
-	 * (this behavior can be prevented by setting them to NULL before deletion)
+	 * Empty virtual destructor.
 	 */
 	virtual ~And() {
 		// Intentionally left empty.
@@ -87,16 +91,16 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones.
 	 *
-	 * @returns a new AND-object that is identical the called object.
+	 * @returns A new And object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractLtlFormula<T>> clone() const override {
 		std::shared_ptr<And<T>> result(new And());
-		if (this->leftIsSet()) {
+		if (this->isLeftSet()) {
 		  result->setLeft(left->clone());
 		}
-		if (this->rightIsSet()) {
+		if (this->isRightSet()) {
 		  result->setRight(right->clone());
 		}
 		return result;
@@ -116,7 +120,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "(";
@@ -138,55 +144,65 @@ public:
 	}
 
 	/*!
-	 * Sets the left child node.
+	 * Gets the left child node.
 	 *
-	 * @param newLeft the new left child.
+	 * @returns The left child node.
 	 */
-	void setLeft(std::shared_ptr<AbstractLtlFormula<T>> const & newLeft) {
-		left = newLeft;
+	std::shared_ptr<AbstractLtlFormula<T>> const & getLeft() const {
+		return left;
 	}
 
 	/*!
-	 * Sets the right child node.
+	 * Gets the right child node.
 	 *
-	 * @param newRight the new right child.
+	 * @returns The right child node.
 	 */
-	void setRight(std::shared_ptr<AbstractLtlFormula<T>> const & newRight) {
-		right = newRight;
+	std::shared_ptr<AbstractLtlFormula<T>> const & getRight() const {
+		return right;
 	}
 
 	/*!
-	 * @returns a pointer to the left child node
+	 * Sets the left child node.
+	 *
+	 * @param newLeft The new left child.
 	 */
-	std::shared_ptr<AbstractLtlFormula<T>> const & getLeft() const {
-		return left;
+	void setLeft(std::shared_ptr<AbstractLtlFormula<T>> const & newLeft) {
+		left = newLeft;
 	}
 
 	/*!
-	 * @returns a pointer to the right child node
+	 * Sets the right child node.
+	 *
+	 * @param newRight The new right child.
 	 */
-	std::shared_ptr<AbstractLtlFormula<T>> const & getRight() const {
-		return right;
+	void setRight(std::shared_ptr<AbstractLtlFormula<T>> const & newRight) {
+		right = newRight;
 	}
 
 	/*!
+	 * Checks if the left child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the left child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the left child is set.
 	 */
-	bool leftIsSet() const {
+	bool isLeftSet() const {
 		return left.get() != nullptr;
 	}
 
 	/*!
+	 * Checks if the right child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the right child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the right child is set.
 	 */
-	bool rightIsSet() const {
+	bool isRightSet() const {
 		return right.get() != nullptr;
 	}
 
 private:
+
+	// The left child node.
 	std::shared_ptr<AbstractLtlFormula<T>> left;
+
+	// The right child node.
 	std::shared_ptr<AbstractLtlFormula<T>> right;
 
 };
diff --git a/src/formula/ltl/Ap.h b/src/formula/ltl/Ap.h
index 451dadb99..544d84ed5 100644
--- a/src/formula/ltl/Ap.h
+++ b/src/formula/ltl/Ap.h
@@ -14,29 +14,37 @@ namespace storm {
 namespace property {
 namespace ltl {
 
+// Forward declaration for the interface class.
 template <class T> class Ap;
 
 /*!
- *	@brief Interface class for model checkers that support And.
+ * Interface class for model checkers that support Ap.
  *
- *	All model checkers that support the formula class And must inherit
- *	this pure virtual class.
+ * All model checkers that support the formula class Ap must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IApModelChecker {
 	public:
+
+		/*!
+		 * Empty virtual destructor.
+		 */
+		virtual ~IApModelChecker() {
+			// Intentionally left empty
+		}
+
 		/*!
-		 *	@brief Evaluates And formula within a model checker.
+		 * Evaluates an Ap formula within a model checker.
 		 *
-		 *	@param obj Formula object with subformulas.
-		 *	@return Result of the formula for every node.
+		 * @param obj Formula object with subformulas.
+		 * @return The modelchecking result of the formula for every state.
 		 */
 		virtual std::vector<T> checkAp(const Ap<T>& obj) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract formula tree with atomic proposition as root.
+ * Class for an Ltl formula tree with an atomic proposition as root.
  *
  * This class represents the leaves in the formula tree.
  *
@@ -44,33 +52,37 @@ class IApModelChecker {
  */
 template <class T>
 class Ap: public storm::property::ltl::AbstractLtlFormula<T> {
+
 public:
-	/*!
-	 * Empty constructor
-	 */
-	Ap() {
-		// Intentionally left empty
-	}
 
 	/*!
-	 * Constructor
-	 *
-	 * Creates a new atomic proposition leaf, with the label Ap
+	 * Creates a new atomic proposition leaf, with the given label.
 	 *
-	 * @param ap The string representing the atomic proposition
+	 * @param ap A string representing the atomic proposition.
 	 */
 	Ap(std::string ap) : ap(ap) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Destructor
-	 * At this time, empty...
+	 * Empty virtual destructor.
 	 */
 	virtual ~Ap() {
 		// Intentionally left empty
 	}
 
+	/*!
+	 * Clones the called object.
+	 *
+	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones.
+	 *
+	 * @returns A new Ap object that is a deep copy of the called object.
+	 */
+	virtual std::shared_ptr<AbstractLtlFormula<T>> clone() const override {
+		auto result = std::make_shared<Ap<T>>(this->getAp());
+		return result;
+	}
+
 	/*!
 	 * Calls the model checker to check this formula.
 	 * Needed to infer the correct type of formula class.
@@ -78,8 +90,6 @@ public:
 	 * @note This function should only be called in a generic check function of a model checker class. For other uses,
 	 *       the methods of the model checker should be used.
 	 *
-	 * @note This function is not implemented in this class.
-	 *
 	 * @returns A vector indicating the probability that the formula holds for each state.
 	 */
 	virtual std::vector<T> check(const storm::modelchecker::ltl::AbstractModelChecker<T>& modelChecker) const override {
@@ -87,20 +97,9 @@ public:
 	}
 
 	/*!
-	 * Clones the called object.
-	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
-	 *
-	 * @returns a new AND-object that is identical the called object.
-	 */
-	virtual std::shared_ptr<AbstractLtlFormula<T>> clone() const override {
-		std::shared_ptr<AbstractLtlFormula<T>> result(new Ap(this->getAp()));
-		return result;
-	}
-
-	/*!
-	 * @returns a string representation of the leaf.
+	 * A string representing the atomic proposition.
 	 *
+	 * @returns A string representing the leaf.
 	 */
 	virtual std::string toString() const override {
 		return getAp();
@@ -117,13 +116,17 @@ public:
 	}
 
 	/*!
-	 * @returns the name of the atomic proposition
+	 * Gets the name of the atomic proposition.
+	 *
+	 * @returns The name of the atomic proposition.
 	 */
 	std::string const & getAp() const {
 		return ap;
 	}
 
 private:
+
+	// The atomic proposition referenced by this leaf.
 	std::string ap;
 };
 
diff --git a/src/formula/ltl/BoundedEventually.h b/src/formula/ltl/BoundedEventually.h
index 630e0bbae..57027cea3 100644
--- a/src/formula/ltl/BoundedEventually.h
+++ b/src/formula/ltl/BoundedEventually.h
@@ -17,37 +17,45 @@ namespace storm {
 namespace property {
 namespace ltl {
 
+// Forward declaration for the interface class.
 template <class T> class BoundedEventually;
 
 /*!
- *  @brief Interface class for model checkers that support BoundedEventually.
+ * Interface class for model checkers that support BoundedEventually.
  *   
- *  All model checkers that support the formula class BoundedEventually must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class BoundedEventually must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IBoundedEventuallyModelChecker {
     public:
+
+		/*!
+		 * Empty virtual destructor.
+		 */
+		virtual ~IBoundedEventuallyModelChecker() {
+			// Intentionally left empty
+		}
+
 		/*!
-         *  @brief Evaluates BoundedEventually formula within a model checker.
-         *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
-         */
+		 * Evaluates a BoundedEventually formula within a model checker.
+		 *
+		 * @param obj Formula object with subformulas.
+		 * @return The modelchecking result of the formula for every state.
+		 */
         virtual std::vector<T> checkBoundedEventually(const BoundedEventually<T>& obj) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract (path) formula tree with a BoundedEventually node as root.
+ * Class for a Ltl formula tree with a BoundedEventually node as root.
  *
- * Has one Abstract LTL formulas as sub formula/tree.
+ * Has one Ltl formula as subformula/tree.
  *
  * @par Semantics
  * The formula holds iff in at most \e bound steps, formula \e child holds.
  *
- * The subtrees are seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to NULL before deletion)
+ * The object has shared ownership of its subtree. If this object is deleted and no other object has a shared
+ * ownership of the subtree it will be deleted as well.
  *
  * @see AbstractLtlFormula
  */
@@ -57,27 +65,25 @@ class BoundedEventually : public AbstractLtlFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor
+	 * Creates a BoundedEventually node without a subnode.
+	 * The resulting object will not represent a complete formula!
 	 */
 	BoundedEventually() : child(nullptr), bound(0) {
 		//  Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor
+	 * Creates a BoundedEventually node using the given parameters.
 	 *
-	 * @param child The child formula subtree
-	 * @param bound The maximal number of steps
+	 * @param child The child formula subtree.
+	 * @param bound The maximal number of steps within which the subformula must hold.
 	 */
 	BoundedEventually(std::shared_ptr<AbstractLtlFormula<T>> child, uint_fast64_t bound) : child(child), bound(bound) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Destructor.
-	 *
-	 * Also deletes the subtrees.
-	 * (this behaviour can be prevented by setting the subtrees to NULL before deletion)
+	 * Empty virtual destructor.
 	 */
 	virtual ~BoundedEventually() {
 		// Intentionally left empty.
@@ -87,14 +93,14 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new BoundedUntil-object that is identical the called object.
+	 * @returns A new BoundedEventually object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractLtlFormula<T>> clone() const override {
 		std::shared_ptr<BoundedEventually<T>> result(new BoundedEventually<T>());
 		result->setBound(bound);
-		if (this->childIsSet()) {
+		if (this->isChildSet()) {
 			result->setChild(child->clone());
 		}
 		return result;
@@ -115,7 +121,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "F<=";
@@ -126,39 +134,45 @@ public:
 	}
 
 	/*!
-	 * @returns the child node
+	 * Gets the child node.
+	 *
+	 * @returns The child node.
 	 */
 	std::shared_ptr<AbstractLtlFormula<T>> const & getChild() const {
 		return child;
 	}
 
 	/*!
-	 * Sets the subtree
-	 * @param child the new child node
+	 * Sets the subtree.
+	 *
+	 * @param child The new child.
 	 */
 	void setChild(std::shared_ptr<AbstractLtlFormula<T>> const & child) {
 		this->child = child;
 	}
 
 	/*!
+	 * Checks if the child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the child is set.
 	 */
-	bool childIsSet() const {
+	bool isChildSet() const {
 		return child.get() != nullptr;
 	}
 
 	/*!
-	 * @returns the maximally allowed number of steps for the bounded until operator
+	 * Gets the maximally allowed number of steps for the bounded eventually operator.
+	 *
+	 * @returns The bound.
 	 */
 	uint_fast64_t getBound() const {
 		return bound;
 	}
 
 	/*!
-	 * Sets the maximally allowed number of steps for the bounded until operator
+	 * Sets the maximally allowed number of steps for the bounded eventually operator.
 	 *
-	 * @param bound the new bound.
+	 * @param bound The new bound.
 	 */
 	void setBound(uint_fast64_t bound) {
 		this->bound = bound;
@@ -166,7 +180,11 @@ public:
 
 
 private:
+
+	// The child node.
 	std::shared_ptr<AbstractLtlFormula<T>> child;
+
+	// The maximal number of steps within which the subformula must hold.
 	uint_fast64_t bound;
 
 };
diff --git a/src/formula/ltl/BoundedUntil.h b/src/formula/ltl/BoundedUntil.h
index 87e0a7a2d..748e3ae0e 100644
--- a/src/formula/ltl/BoundedUntil.h
+++ b/src/formula/ltl/BoundedUntil.h
@@ -17,38 +17,46 @@ namespace storm {
 namespace property {
 namespace ltl {
 
+// Forward declaration for the interface class.
 template <class T> class BoundedUntil;
 
 /*!
- *  @brief Interface class for model checkers that support BoundedUntil.
+ * Interface class for model checkers that support BoundedUntil.
  *   
- *  All model checkers that support the formula class BoundedUntil must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class BoundedUntil must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IBoundedUntilModelChecker {
     public:
+
+		/*!
+		 * Empty virtual destructor.
+		 */
+		virtual ~IBoundedUntilModelChecker() {
+			// Intentionally left empty
+		}
+
 		/*!
-         *  @brief Evaluates BoundedUntil formula within a model checker.
-         *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
-         */
+		 * Evaluates a BoundedUntil formula within a model checker.
+		 *
+		 * @param obj Formula object with subformulas.
+		 * @return The modelchecking result of the formula for every state.
+		 */
         virtual std::vector<T> checkBoundedUntil(const BoundedUntil<T>& obj) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract (path) formula tree with a BoundedUntil node as root.
+ * Class for an Ltl formula tree with a BoundedUntil node as root.
  *
- * Has two Abstract LTL formulas as sub formulas/trees.
+ * Has two Ltl formulas as sub formulas/trees.
  *
  * @par Semantics
  * The formula holds iff in at most \e bound steps, formula \e right (the right subtree) holds, and before,
  * \e left holds.
  *
- * The subtrees are seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to NULL before deletion)
+ * The object has shared ownership of its subtrees. If this object is deleted and no other object has a shared
+ * ownership of the subtrees they will be deleted as well.
  *
  * @see AbstractLtlFormula
  */
@@ -58,28 +66,26 @@ class BoundedUntil : public AbstractLtlFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor
+	 * Creates a BoundedUntil node without subnodes.
+	 * The resulting object will not represent a complete formula!
 	 */
 	BoundedUntil() : left(nullptr), right(nullptr), bound(0) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor
+	 * Creates a BoundedUntil node using the given parameters.
 	 *
-	 * @param left The left formula subtree
-	 * @param right The left formula subtree
-	 * @param bound The maximal number of steps
+	 * @param left The left formula subtree.
+	 * @param right The right formula subtree.
+	 * @param bound The maximal number of steps within which the right subformula must hold.
 	 */
 	BoundedUntil(std::shared_ptr<AbstractLtlFormula<T>> const & left, std::shared_ptr<AbstractLtlFormula<T>> const & right, uint_fast64_t bound) : left(left), right(right), bound(bound) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Destructor.
-	 *
-	 * Also deletes the subtrees.
-	 * (this behaviour can be prevented by setting the subtrees to NULL before deletion)
+	 * Empty virtual destructor.
 	 */
 	virtual ~BoundedUntil() {
 		// Intentionally left empty.
@@ -88,17 +94,17 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new BoundedUntil-object that is identical the called object.
+	 * @returns A new BoundedUntil object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractLtlFormula<T>> clone() const override {
 		std::shared_ptr<BoundedUntil<T>> result(new BoundedUntil<T>());
 		result->setBound(bound);
-		if (this->leftIsSet()) {
+		if (this->isLeftSet()) {
 			result->setLeft(left->clone());
 		}
-		if (this->rightIsSet()) {
+		if (this->isRightSet()) {
 			result->setRight(right->clone());
 		}
 		return result;
@@ -119,12 +125,9 @@ public:
 	}
 
 	/*!
-	 *	@brief Return string representation of this formula.
-	 *
-	 * In LTL, brackets are needed around the until, as Until may appear nested (in other logics, Until always is the
-	 * root of a path formula); hence this function is overwritten in this class.
+	 * Returns a textual representation of the formula tree with this node as root.
 	 *
-	 * @return A string representation of the formula.
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "(" + left->toString();
@@ -136,72 +139,86 @@ public:
 	}
 
 	/*!
-	 * Sets the left child node.
+	 * Gets the left child node.
 	 *
-	 * @param newLeft the new left child.
+	 * @returns The left child node.
 	 */
-	void setLeft(std::shared_ptr<AbstractLtlFormula<T>> const & newLeft) {
-		left = newLeft;
+	std::shared_ptr<AbstractLtlFormula<T>> const & getLeft() const {
+		return left;
 	}
 
 	/*!
-	 * Sets the right child node.
+	 * Gets the right child node.
 	 *
-	 * @param newRight the new right child.
+	 * @returns The right child node.
 	 */
-	void setRight(std::shared_ptr<AbstractLtlFormula<T>> const & newRight) {
-		right = newRight;
+	std::shared_ptr<AbstractLtlFormula<T>> const & getRight() const {
+		return right;
 	}
 
 	/*!
-	 * @returns a pointer to the left child node
+	 * Sets the left child node.
+	 *
+	 * @param newLeft The new left child.
 	 */
-	std::shared_ptr<AbstractLtlFormula<T>> const & getLeft() const {
-		return left;
+	void setLeft(std::shared_ptr<AbstractLtlFormula<T>> const & newLeft) {
+		left = newLeft;
 	}
 
 	/*!
-	 * @returns a pointer to the right child node
+	 * Sets the right child node.
+	 *
+	 * @param newRight The new right child.
 	 */
-	std::shared_ptr<AbstractLtlFormula<T>> const & getRight() const {
-		return right;
+	void setRight(std::shared_ptr<AbstractLtlFormula<T>> const & newRight) {
+		right = newRight;
 	}
 
 	/*!
+	 * Checks if the left child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the left child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the left child is set.
 	 */
-	bool leftIsSet() const {
+	bool isLeftSet() const {
 		return left.get() != nullptr;
 	}
 
 	/*!
+	 * Checks if the right child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the right child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the right child is set.
 	 */
-	bool rightIsSet() const {
+	bool isRightSet() const {
 		return right.get() != nullptr;
 	}
 
 	/*!
-	 * @returns the maximally allowed number of steps for the bounded until operator
+	 * Gets the maximally allowed number of steps for the bounded until operator.
+	 *
+	 * @returns The bound.
 	 */
 	uint_fast64_t getBound() const {
 		return bound;
 	}
 
 	/*!
-	 * Sets the maximally allowed number of steps for the bounded until operator
+	 * Sets the maximally allowed number of steps for the bounded until operator.
 	 *
-	 * @param bound the new bound.
+	 * @param bound The new bound.
 	 */
 	void setBound(uint_fast64_t bound) {
 		this->bound = bound;
 	}
 
 private:
+
+	// The left child node.
 	std::shared_ptr<AbstractLtlFormula<T>> left;
+
+	// The right child node.
 	std::shared_ptr<AbstractLtlFormula<T>> right;
+
+	// The maximal number of steps within which the subformulas must hold.
 	uint_fast64_t bound;
 };
 
diff --git a/src/formula/ltl/Eventually.h b/src/formula/ltl/Eventually.h
index 328fd993b..9af8ad9b2 100644
--- a/src/formula/ltl/Eventually.h
+++ b/src/formula/ltl/Eventually.h
@@ -1,5 +1,5 @@
 /*
- * Next.h
+ * Eventually.h
  *
  *  Created on: 26.12.2012
  *      Author: Christian Dehnert
@@ -15,37 +15,45 @@ namespace storm {
 namespace property {
 namespace ltl {
 
+// Forward declaration for the interface class.
 template <class T> class Eventually;
 
 /*!
- *  @brief Interface class for model checkers that support Eventually.
+ * Interface class for model checkers that support Eventually.
  *
- *  All model checkers that support the formula class Eventually must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class Eventually must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IEventuallyModelChecker {
     public:
+
 		/*!
-         *  @brief Evaluates Eventually formula within a model checker.
-         *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
-         */
+		 * Empty virtual destructor.
+		 */
+		virtual ~IEventuallyModelChecker() {
+			// Intentionally left empty.
+		}
+
+		/*!
+		 * Evaluates an Eventually formula within a model checker.
+		 *
+		 * @param obj Formula object with subformulas.
+		 * @return The modelchecking result of the formula for every state.
+		 */
         virtual std::vector<T> checkEventually(const Eventually<T>& obj) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract (path) formula tree with an Eventually node as root.
+ * Class for an Ltl formula tree with an Eventually node as root.
  *
- * Has one Abstract LTL formula as sub formula/tree.
+ * Has one Abstract Ltl formula as sub formula/tree.
  *
  * @par Semantics
  * The formula holds iff eventually \e child holds.
  *
- * The subtree is seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to nullptr before deletion)
+ * The object has shared ownership of its subtree. If this object is deleted and no other object has a shared
+ * ownership of the subtree it will be deleted as well.
  *
  * @see AbstractLtlFormula
  */
@@ -55,26 +63,24 @@ class Eventually : public AbstractLtlFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor
+	 * Creates an Eventually node without a subnode.
+	 * The resulting object will not represent a complete formula!
 	 */
 	Eventually() : child(nullptr) {
 		//  Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor
+	 * Creates an Eventually node using the given parameter.
 	 *
-	 * @param child The child node
+	 * @param child The child formula subtree.
 	 */
 	Eventually(std::shared_ptr<AbstractLtlFormula<T>> const & child) : child(child) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor.
-	 *
-	 * Also deletes the subtree.
-	 * (this behaviour can be prevented by setting the subtrees to nullptr before deletion)
+	 * Empty virtual destructor.
 	 */
 	virtual ~Eventually() {
 		// Intentionally left empty.
@@ -83,13 +89,13 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new Eventually-object that is identical the called object.
+	 * @returns A new Eventually object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractLtlFormula<T>> clone() const override {
 		std::shared_ptr<Eventually<T>> result(new Eventually<T>());
-		if (this->childIsSet()) {
+		if (this->isChildSet()) {
 			result->setChild(child->clone());
 		}
 		return result;
@@ -109,7 +115,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "F ";
@@ -118,29 +126,35 @@ public:
 	}
 
 	/*!
-	 * @returns the child node
+	 * Gets the child node.
+	 *
+	 * @returns The child node.
 	 */
 	std::shared_ptr<AbstractLtlFormula<T>> const & getChild() const {
 		return child;
 	}
 
 	/*!
-	 * Sets the subtree
-	 * @param child the new child node
+	 * Sets the subtree.
+	 *
+	 * @param child The new child.
 	 */
 	void setChild(std::shared_ptr<AbstractLtlFormula<T>> const & child) {
 		this->child = child;
 	}
 
 	/*!
+	 * Checks if the child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the child node is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the child is set.
 	 */
-	bool childIsSet() const {
+	bool isChildSet() const {
 		return child.get() != nullptr;
 	}
 
 private:
+
+	// The child node.
 	std::shared_ptr<AbstractLtlFormula<T>> child;
 };
 
diff --git a/src/formula/ltl/Globally.h b/src/formula/ltl/Globally.h
index 060b5bba2..0e0af887a 100644
--- a/src/formula/ltl/Globally.h
+++ b/src/formula/ltl/Globally.h
@@ -1,5 +1,5 @@
 /*
- * Next.h
+ * Globally.h
  *
  *  Created on: 26.12.2012
  *      Author: Christian Dehnert
@@ -15,37 +15,45 @@ namespace storm {
 namespace property {
 namespace ltl {
 
+// Forward declaration for the interface class.
 template <class T> class Globally;
 
 /*!
- *  @brief Interface class for model checkers that support Globally.
+ * Interface class for model checkers that support Globally.
  *   
- *  All model checkers that support the formula class Globally must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class Globally must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IGloballyModelChecker {
     public:
+
 		/*!
-         *  @brief Evaluates Globally formula within a model checker.
-         *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
-         */
+		 * Empty virtual destructor.
+		 */
+		virtual ~IGloballyModelChecker() {
+			// Intentionally left empty
+		}
+
+		/*!
+		 * Evaluates a Globally formula within a model checker.
+		 *
+		 * @param obj Formula object with subformulas.
+		 * @return The modelchecking result of the formula for every state.
+		 */
         virtual std::vector<T> checkGlobally(const Globally<T>& obj) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract (path) formula tree with a Globally node as root.
+ * Class for an Ltl formula tree with a Globally node as root.
  *
- * Has one Abstract LTL formula as sub formula/tree.
+ * Has one Ltl formula as sub formula/tree.
  *
  * @par Semantics
- * The formula holds iff globally \e child holds.
+ * The formula holds iff always formula \e child holds.
  *
- * The subtree is seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to nullptr before deletion)
+ * The object has shared ownership of its subtree. If this object is deleted and no other object has a shared
+ * ownership of the subtree it will be deleted as well.
  *
  * @see AbstractLtlFormula
  */
@@ -55,26 +63,24 @@ class Globally : public AbstractLtlFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor
+	 * Creates a Globally node without a subnode.
+	 * The resulting object will not represent a complete formula!
 	 */
 	Globally() : child(nullptr) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor
+	 * Creates a Globally node using the given parameter.
 	 *
-	 * @param child The child node
+	 * @param child The child formula subtree.
 	 */
 	Globally(std::shared_ptr<AbstractLtlFormula<T>> const & child) : child(child) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor.
-	 *
-	 * Also deletes the subtree.
-	 * (this behaviour can be prevented by setting the subtrees to nullptr before deletion)
+	 * Empty virtual destructor.
 	 */
 	virtual ~Globally() {
 		// Intentionally left empty.
@@ -83,13 +89,13 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new Globally-object that is identical the called object.
+	 * @returns A new Globally object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractLtlFormula<T>> clone() const override {
 		std::shared_ptr<Globally<T>> result(new Globally<T>());
-		if (this->childIsSet()) {
+		if (this->isChildSet()) {
 			result->setChild(child->clone());
 		}
 		return result;
@@ -109,7 +115,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "G ";
@@ -118,30 +126,36 @@ public:
 	}
 
 	/*!
-	 * @returns the child node
+	 * Gets the child node.
+	 *
+	 * @returns The child node.
 	 */
 	std::shared_ptr<AbstractLtlFormula<T>> const & getChild() const {
 		return *child;
 	}
 
 	/*!
-	 * Sets the subtree
-	 * @param child the new child node
+	 * Sets the subtree.
+	 *
+	 * @param child The new child.
 	 */
 	void setChild(std::shared_ptr<AbstractLtlFormula<T>> const & child) {
 		this->child = child;
 	}
 
 	/*!
+	 * Checks if the child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the child node is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the child is set.
 	 */
-	bool childIsSet() const {
+	bool isChildSet() const {
 		return child.get() != nullptr;
 	}
 
-	private:
-		std::shared_ptr<AbstractLtlFormula<T>> child;
+private:
+
+	// The child node.
+	std::shared_ptr<AbstractLtlFormula<T>> child;
 };
 
 } //namespace ltl
diff --git a/src/formula/ltl/LtlFilter.h b/src/formula/ltl/LtlFilter.h
index 9f876bd8c..4b7704b10 100644
--- a/src/formula/ltl/LtlFilter.h
+++ b/src/formula/ltl/LtlFilter.h
@@ -14,51 +14,85 @@
 #include "src/formula/actions/AbstractAction.h"
 #include "src/exceptions/NotImplementedException.h"
 
-namespace storm {
-namespace property {
-namespace action {
- template <typename T> class AbstractAction;
-}
-}
-}
-
 namespace storm {
 namespace property {
 namespace ltl {
 
+/*!
+ * This is the Ltl specific filter.
+ *
+ * It maintains a Ltl formula which can be checked against a given model by either calling evaluate() or check().
+ * Additionally it maintains a list of filter actions that are used to further manipulate the modelchecking results and prepare them for output.
+ */
 template <class T>
 class LtlFilter : public storm::property::AbstractFilter<T> {
 
+	// Convenience typedef to make the code more readable.
 	typedef typename storm::property::action::AbstractAction<T>::Result Result;
 
 public:
 
+	/*!
+	 * Creates an empty LtlFilter, maintaining no Ltl formula.
+	 *
+	 * Calling check or evaluate will return an empty result.
+	 */
 	LtlFilter() : AbstractFilter<T>(UNDEFINED), child(nullptr) {
 		// Intentionally left empty.
 	}
 
+	/*!
+	 * Creates an LtlFilter maintaining an Ltl formula but containing no actions.
+	 *
+	 * The modelchecking result will be returned or printed as is.
+	 *
+	 * @param child The Ltl formula to be maintained.
+	 * @param opt An enum value indicating which kind of scheduler shall be used for path formulas on nondeterministic models.
+	 */
 	LtlFilter(std::shared_ptr<AbstractLtlFormula<T>> const & child, OptimizingOperator opt = UNDEFINED) : AbstractFilter<T>(opt), child(child) {
 		// Intentionally left empty.
 	}
 
+	/*!
+	 * Creates an LtlFilter maintaining a Ltl formula and containing a single action.
+	 *
+	 * The given action will be applied to the modelchecking result during evaluation.
+	 * Further actions can be added later.
+	 *
+	 * @param child The Ltl formula to be maintained.
+	 * @param action The single action to be executed during evaluation.
+	 * @param opt An enum value indicating which kind of scheduler shall be used for path formulas on nondeterministic models.
+	 */
 	LtlFilter(std::shared_ptr<AbstractLtlFormula<T>> const & child, std::shared_ptr<action::AbstractAction<T>> const & action, OptimizingOperator opt = UNDEFINED) : AbstractFilter<T>(action, opt), child(child) {
 		// Intentionally left empty.
 	}
 
+	/*!
+	 * Creates an LtlFilter using the given parameters.
+	 *
+	 * The given actions will be applied to the modelchecking result in ascending index order during evaluation.
+	 * Further actions can be added later.
+	 *
+	 * @param child The Ltl formula to be maintained.
+	 * @param actions A vector conatining the actions that are to be executed during evaluation.
+	 * @param opt An enum value indicating which kind of scheduler shall be used for path formulas on nondeterministic models.
+	 */
 	LtlFilter(std::shared_ptr<AbstractLtlFormula<T>> const & child, std::vector<std::shared_ptr<action::AbstractAction<T>>> const & actions, OptimizingOperator opt = UNDEFINED) : AbstractFilter<T>(actions, opt), child(child) {
 		// Intentionally left empty.
 	}
 
+	/*!
+	 * Empty virtual destructor.
+	 */
 	virtual ~LtlFilter() {
 		// Intentionally left empty.
 	}
 
 
-	/*!Description copied from the MC.
-	 * Checks the given state formula on the model and prints the result (true/false) for all initial states, i.e.
-	 * states that carry the atomic proposition "init".
+	/*!
+	 * Calls the modelchecker, retrieves the modelchecking result, applies the filter action one by one and prints out the result.
 	 *
-	 * @param stateFormula The formula to be checked.
+	 * @param modelchecker The modelchecker to be called.
 	 */
 	void check(storm::modelchecker::ltl::AbstractModelChecker<T> const & modelchecker) const {
 
@@ -83,6 +117,12 @@ public:
 
 	}
 
+	/*!
+	 * Calls the modelchecker, retrieves the modelchecking result, applies the filter action one by one and returns the result.
+	 *
+	 * @param modelchecker The modelchecker to be called.
+	 * @returns The result of the sequential application of the filter actions to the modelchecking result.
+	 */
 	Result evaluate(storm::modelchecker::ltl::AbstractModelChecker<T> const & modelchecker) const {
 		// First, get the model checking result.
 		Result result;
@@ -112,6 +152,13 @@ public:
 		return result;
 	}
 
+	/*!
+	 * Returns a textual representation of the filter.
+	 *
+	 * That includes the actions as well as the maintained formula.
+	 *
+	 * @returns A string representing the filter.
+	 */
 	std::string toString() const override {
 		std::string desc = "";
 
@@ -151,26 +198,41 @@ public:
 		return desc;
 	}
 
-	virtual std::string toPrettyString() const override {
-		std::string desc = "Filter: ";
-		desc += "\nActions:";
-		for(auto action : this->actions) {
-			desc += "\n\t" + action->toString();
-		}
-		desc += "\nFormula:\n\t" + child->toString();
-		return desc;
+	/*!
+	 * Gets the child node.
+	 *
+	 * @returns The child node.
+	 */
+	std::shared_ptr<AbstractLtlFormula<T>> const & getChild() const {
+		return child;
 	}
 
+	/*!
+	 * Sets the subtree.
+	 *
+	 * @param child The new child.
+	 */
 	void setChild(std::shared_ptr<AbstractLtlFormula<T>> const & child) {
 		this->child = child;
 	}
 
-	std::shared_ptr<AbstractLtlFormula<T>> const & getChild() const {
-		return child;
+	/*!
+	 * Checks if the child is set, i.e. it does not point to null.
+	 *
+	 * @return True iff the child is set.
+	 */
+	bool isChildSet() const {
+		return child.get() != nullptr;
 	}
 
 private:
 
+	/*!
+	 * Writes out the given result.
+	 *
+	 * @param result The result of the sequential application of the filter actions to a modelchecking result.
+	 * @param modelchecker The modelchecker that was called to generate the modelchecking result. Needed for legacy support.
+	 */
 	void writeOut(Result const & result, storm::modelchecker::ltl::AbstractModelChecker<T> const & modelchecker) const {
 
 		// Test for the kind of result. Values or states.
@@ -207,6 +269,7 @@ private:
 		std::cout << std::endl << "-------------------------------------------" << std::endl;
 	}
 
+	// The Ltl formula maintained by this filter.
 	std::shared_ptr<AbstractLtlFormula<T>> child;
 };
 
diff --git a/src/formula/ltl/Next.h b/src/formula/ltl/Next.h
index a038252c2..0eb64a2ed 100644
--- a/src/formula/ltl/Next.h
+++ b/src/formula/ltl/Next.h
@@ -14,37 +14,45 @@ namespace storm {
 namespace property {
 namespace ltl {
 
+// Forward declaration for the interface class.
 template <class T> class Next;
 
 /*!
- *  @brief Interface class for model checkers that support Next.
+ * Interface class for model checkers that support Next.
  *   
- *  All model checkers that support the formula class Next must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class Next must inherit
+ * this pure virtual class.
  */
 template <class T>
 class INextModelChecker {
     public:
+
 		/*!
-         *  @brief Evaluates Next formula within a model checker.
-         *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
-         */
+		 * Empty virtual destructor.
+		 */
+		virtual ~INextModelChecker() {
+			// Intentionally left empty
+		}
+
+		/*!
+		 * Evaluates Next formula within a model checker.
+		 *
+		 * @param obj Formula object with subformulas.
+		 * @return Result of the formula for every node.
+		 */
         virtual std::vector<T> checkNext(const Next<T>& obj) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract (path) formula tree with a Next node as root.
+ * Class for an Ltl formula tree with a Next node as root.
  *
- * Has two Abstract LTL formulas as sub formulas/trees.
+ * Has two LTL formulas as sub formulas/trees.
  *
  * @par Semantics
- * The formula holds iff in the next step, \e child holds
+ * The formula holds iff in the next step, formula \e child holds
  *
- * The subtree is seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to NULL before deletion)
+ * The object has shared ownership of its subtree. If this object is deleted and no other object has a shared
+ * ownership of the subtree it will be deleted as well.
  *
  * @see AbstractLtlFormula
  */
@@ -54,26 +62,24 @@ class Next : public AbstractLtlFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor
+	 * Creates a Next node without a subnode.
+	 * The resulting object will not represent a complete formula!
 	 */
 	Next() : child(nullptr) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor
+	 * Creates a Next node using the given parameter.
 	 *
-	 * @param child The child node
+	 * @param child The child formula subtree.
 	 */
 	Next(std::shared_ptr<AbstractLtlFormula<T>> const & child) : child(child) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor.
-	 *
-	 * Also deletes the subtree.
-	 * (this behaviour can be prevented by setting the subtrees to NULL before deletion)
+	 * Empty virtual destructor.
 	 */
 	virtual ~Next() {
 		// Intentionally left empty.
@@ -82,13 +88,13 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new BoundedUntil-object that is identical the called object.
+	 * @returns A new Next object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractLtlFormula<T>> clone() const override {
 		std::shared_ptr<Next<T>> result(new Next<T>());
-		if (this->childIsSet()) {
+		if (this->isChildSet()) {
 			result->setChild(child->clone());
 		}
 		return result;
@@ -108,7 +114,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "X ";
@@ -117,29 +125,35 @@ public:
 	}
 
 	/*!
-	 * @returns the child node
+	 * Gets the child node.
+	 *
+	 * @returns The child node.
 	 */
 	std::shared_ptr<AbstractLtlFormula<T>> const & getChild() const {
 		return child;
 	}
 
 	/*!
-	 * Sets the subtree
-	 * @param child the new child node
+	 * Sets the subtree.
+	 *
+	 * @param child The new child.
 	 */
 	void setChild(std::shared_ptr<AbstractLtlFormula<T>> const & child) {
 		this->child = child;
 	}
 
 	/*!
+	 * Checks if the child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the child node is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the child is set.
 	 */
-	bool childIsSet() const {
+	bool isChildSet() const {
 		return child.get() != nullptr;
 	}
 
 private:
+
+	// The child node.
 	std::shared_ptr<AbstractLtlFormula<T>> child;
 };
 
diff --git a/src/formula/ltl/Not.h b/src/formula/ltl/Not.h
index 2538298a4..cd1edd251 100644
--- a/src/formula/ltl/Not.h
+++ b/src/formula/ltl/Not.h
@@ -14,34 +14,42 @@ namespace storm {
 namespace property {
 namespace ltl {
 
+// Forward declaration for the interface class.
 template <class T> class Not;
 
 /*!
- *  @brief Interface class for model checkers that support Not.
+ * Interface class for model checkers that support Not.
  *   
- *  All model checkers that support the formula class Not must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class Not must inherit
+ * this pure virtual class.
  */
 template <class T>
 class INotModelChecker {
     public:
+
 		/*!
-         *  @brief Evaluates Not formula within a model checker.
-         *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
-         */
+		 * Empty virtual destructor.
+		 */
+		virtual ~INotModelChecker() {
+			// Intentionally left empty
+		}
+
+		/*!
+		 * Evaluates Not formula within a model checker.
+		 *
+		 * @param obj Formula object with subformulas.
+		 * @return Result of the formula for every node.
+		 */
         virtual std::vector<T> checkNot(const Not<T>& obj) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract formula tree with NOT node as root.
+ * Class for an Ltl formula tree with a Not node as root.
  *
- * Has one Abstract LTL formula as sub formula/tree.
+ * Has one Ltl formula as sub formula/tree.
  *
- * The subtree is seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to NULL before deletion)
+ * The object has shared ownership of its subtree. If this object is deleted and no other object has a shared
+ * ownership of the subtree it will be deleted as well.
  *
  * @see AbstractLtlFormula
  */
@@ -51,25 +59,24 @@ class Not : public AbstractLtlFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor
+	 * Creates a Not node without a subnode.
+	 * The resulting object will not represent a complete formula!
 	 */
 	Not() : child(nullptr) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor
-	 * @param child The child node
+	 * Creates a Not node using the given parameter.
+	 *
+	 * @param child The child formula subtree.
 	 */
 	Not(std::shared_ptr<AbstractLtlFormula<T>> const & child) : child(child) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Destructor
-	 *
-	 * Also deletes the subtree
-	 * (this behavior can be prevented by setting them to NULL before deletion)
+	 * Empty virtual destructor.
 	 */
 	virtual ~Not() {
 		// Intentionally left empty.
@@ -78,13 +85,13 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new AND-object that is identical the called object.
+	 * @returns A new Not object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractLtlFormula<T>> clone() const override {
 		std::shared_ptr<Not<T>> result(new Not<T>());
-		if (this->childIsSet()) {
+		if (this->isChildSet()) {
 			result->setChild(child->clone());
 		}
 		return result;
@@ -104,7 +111,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "!";
@@ -123,29 +132,35 @@ public:
 	}
 
 	/*!
-	 * @returns The child node
+	 * Gets the child node.
+	 *
+	 * @returns The child node.
 	 */
 	std::shared_ptr<AbstractLtlFormula<T>> const & getChild() const {
 		return child;
 	}
 
 	/*!
-	 * Sets the subtree
-	 * @param child the new child node
+	 * Sets the subtree.
+	 *
+	 * @param child The new child.
 	 */
 	void setChild(std::shared_ptr<AbstractLtlFormula<T>> const & child) {
 		this->child = child;
 	}
 
 	/*!
+	 * Checks if the child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the child node is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the child is set.
 	 */
-	bool childIsSet() const {
+	bool isChildSet() const {
 		return child.get() != nullptr;
 	}
 
 private:
+
+	// The child node.
 	std::shared_ptr<AbstractLtlFormula<T>> child;
 };
 
diff --git a/src/formula/ltl/Or.h b/src/formula/ltl/Or.h
index 42296766f..a7c73a1f1 100644
--- a/src/formula/ltl/Or.h
+++ b/src/formula/ltl/Or.h
@@ -14,37 +14,45 @@ namespace storm {
 namespace property {
 namespace ltl {
 
+// Forward declaration for the interface class.
 template <class T> class Or;
 
 /*!
- *	@brief Interface class for model checkers that support And.
+ * Interface class for model checkers that support Or.
  *
- *	All model checkers that support the formula class And must inherit
- *	this pure virtual class.
+ * All model checkers that support the formula class Or must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IOrModelChecker {
 	public:
+
+		/*!
+		 * Empty virtual destructor.
+		 */
+		virtual ~IOrModelChecker() {
+			// Intentionally left empty
+		}
+
 		/*!
-		 *	@brief Evaluates And formula within a model checker.
+		 * Evaluates Or formula within a model checker.
 		 *
-		 *	@param obj Formula object with subformulas.
-		 *	@return Result of the formula for every node.
+		 * @param obj Formula object with subformulas.
+		 * @return Result of the formula for every node.
 		 */
 		virtual std::vector<T> checkOr(const Or<T>& obj) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract formula tree with OR node as root.
+ * Class for an abstract formula tree with an Or node as root.
  *
- * Has two LTL formulas as sub formulas/trees.
+ * Has two Ltl formulas as sub formulas/trees.
  *
- * As OR is commutative, the order is \e theoretically not important, but will influence the order in which
+ * As Or is commutative, the order is \e theoretically not important, but will influence the order in which
  * the model checker works.
  *
- * The subtrees are seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to NULL before deletion)
+ * The object has shared ownership of its subtrees. If this object is deleted and no other object has a shared
+ * ownership of the subtrees they will be deleted as well.
  *
  * @see AbstractLtlFormula
  */
@@ -54,29 +62,25 @@ class Or: public storm::property::ltl::AbstractLtlFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor.
-	 * Will create an AND-node without subnotes. Will not represent a complete formula!
+	 * Creates an Or node without subnodes.
+	 * The resulting object will not represent a complete formula!
 	 */
 	Or() : left(nullptr), right(nullptr) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor.
-	 * Creates an AND note with the parameters as subtrees.
+	 * Creates an Or node with the parameters as subtrees.
 	 *
-	 * @param left The left sub formula
-	 * @param right The right sub formula
+	 * @param left The left sub formula.
+	 * @param right The right sub formula.
 	 */
 	Or(std::shared_ptr<AbstractLtlFormula<T>> const & left, std::shared_ptr<AbstractLtlFormula<T>> const & right) : left(left), right(right) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Destructor.
-	 *
-	 * The subtrees are deleted with the object
-	 * (this behavior can be prevented by setting them to NULL before deletion)
+	 * Empty virtual destructor.
 	 */
 	virtual ~Or() {
 		// Intentionally left empty.
@@ -85,16 +89,16 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones.
 	 *
-	 * @returns a new AND-object that is identical the called object.
+	 * @returns A new Or object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractLtlFormula<T>> clone() const override {
 		std::shared_ptr<Or<T>> result(new Or<T>());
-		if (this->leftIsSet()) {
+		if (this->isLeftSet()) {
 		  result->setLeft(left->clone());
 		}
-		if (this->rightIsSet()) {
+		if (this->isRightSet()) {
 		  result->setRight(right->clone());
 		}
 		return result;
@@ -114,7 +118,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "(";
@@ -136,55 +142,65 @@ public:
 	}
 
 	/*!
-	 * Sets the left child node.
+	 * Gets the left child node.
 	 *
-	 * @param newLeft the new left child.
+	 * @returns The left child node.
 	 */
-	void setLeft(std::shared_ptr<AbstractLtlFormula<T>> const & newLeft) {
-		left = newLeft;
+	std::shared_ptr<AbstractLtlFormula<T>> const & getLeft() const {
+		return left;
 	}
 
 	/*!
-	 * Sets the right child node.
+	 * Gets the right child node.
 	 *
-	 * @param newRight the new right child.
+	 * @returns The right child node.
 	 */
-	void setRight(std::shared_ptr<AbstractLtlFormula<T>> const & newRight) {
-		right = newRight;
+	std::shared_ptr<AbstractLtlFormula<T>> const & getRight() const {
+		return right;
 	}
 
 	/*!
-	 * @returns a pointer to the left child node
+	 * Sets the left child node.
+	 *
+	 * @param newLeft The new left child.
 	 */
-	std::shared_ptr<AbstractLtlFormula<T>> const & getLeft() const {
-		return left;
+	void setLeft(std::shared_ptr<AbstractLtlFormula<T>> const & newLeft) {
+		left = newLeft;
 	}
 
 	/*!
-	 * @returns a pointer to the right child node
+	 * Sets the right child node.
+	 *
+	 * @param newRight The new right child.
 	 */
-	std::shared_ptr<AbstractLtlFormula<T>> const & getRight() const {
-		return right;
+	void setRight(std::shared_ptr<AbstractLtlFormula<T>> const & newRight) {
+		right = newRight;
 	}
 
 	/*!
+	 * Checks if the left child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the left child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the left child is set.
 	 */
-	bool leftIsSet() const {
+	bool isLeftSet() const {
 		return left.get() != nullptr;
 	}
 
 	/*!
+	 * Checks if the right child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the right child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the left right is set.
 	 */
-	bool rightIsSet() const {
+	bool isRightSet() const {
 		return right.get() != nullptr;
 	}
 
 private:
+
+	// The left child node.
 	std::shared_ptr<AbstractLtlFormula<T>> left;
+
+	// The right child node.
 	std::shared_ptr<AbstractLtlFormula<T>> right;
 };
 
diff --git a/src/formula/ltl/Until.h b/src/formula/ltl/Until.h
index 92a6e4ed1..56301c0f4 100644
--- a/src/formula/ltl/Until.h
+++ b/src/formula/ltl/Until.h
@@ -14,56 +14,46 @@ namespace storm {
 namespace property {
 namespace ltl {
 
+// Forward declaration for the interface class.
 template <class T> class Until;
 
 /*!
- *  @brief Interface class for model checkers that support Until.
+ * Interface class for model checkers that support Until.
  *
- *  All model checkers that support the formula class Until must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class Until must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IUntilModelChecker {
     public:
+
 		/*!
-         *  @brief Evaluates Until formula within a model checker.
-         *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
-         */
-        virtual std::vector<T> checkUntil(const Until<T>& obj) const = 0;
-};
+		 * Empty virtual destructor.
+		 */
+		virtual ~IUntilModelChecker() {
+			// Intentionally left empty
+		}
 
-/*!
- *	@brief Interface class for visitors that support Until.
- *
- *	All visitors that support the formula class Until must inherit
- *	this pure virtual class.
- */
-template <class T>
-class IUntilVisitor {
-	public:
 		/*!
-		 *	@brief Visits Until formula.
+		 * Evaluates an Until formula within a model checker.
 		 *
-		 *	@param obj Formula object with subformulas.
-		 *	@return Result of the formula for every node.
+		 * @param obj Formula object with subformulas.
+		 * @return The modelchecking result of the formula for every state.
 		 */
-		virtual void visitUntil(const Until<T>& obj) = 0;
+        virtual std::vector<T> checkUntil(const Until<T>& obj) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract (path) formula tree with an Until node as root.
+ * Class for an Ltl formula tree with an Until node as root.
  *
- * Has two Abstract LTL formulas as sub formulas/trees.
+ * Has two Ltl formulas as sub formulas/trees.
  *
  * @par Semantics
  * The formula holds iff eventually, formula \e right (the right subtree) holds, and before,
  * \e left holds always.
  *
- * The subtrees are seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to NULL before deletion)
+ * The object has shared ownership of its subtrees. If this object is deleted and no other object has a shared
+ * ownership of the subtrees they will be deleted as well.
  *
  * @see AbstractLtlFormula
  */
@@ -73,27 +63,25 @@ class Until : public AbstractLtlFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor
+	 * Creates an Until node without subnodes.
+	 * The resulting object will not represent a complete formula!
 	 */
-	Until() : left(left), right(right) {
+	Until() : left(nullptr), right(nullptr) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor
+	 * Creates an Until node using the given parameters.
 	 *
-	 * @param left The left formula subtree
-	 * @param right The left formula subtree
+	 * @param left The left formula subtree.
+	 * @param right The right formula subtree.
 	 */
 	Until(std::shared_ptr<AbstractLtlFormula<T>> const & left, std::shared_ptr<AbstractLtlFormula<T>> const & right) : left(left), right(right) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Destructor.
-	 *
-	 * Also deletes the subtrees.
-	 * (this behaviour can be prevented by setting the subtrees to NULL before deletion)
+	 * Empty virtual destructor.
 	 */
 	virtual ~Until() {
 		// Intentionally left empty.
@@ -102,16 +90,16 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new BoundedUntil-object that is identical the called object.
+	 * @returns A new Until object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractLtlFormula<T>> clone() const override {
 		std::shared_ptr<Until<T>> result(new Until<T>());
-		if (this->leftIsSet()) {
+		if (this->isLeftSet()) {
 		  result->setLeft(left->clone());
 		}
-		if (this->rightIsSet()) {
+		if (this->isRightSet()) {
 		  result->setRight(right->clone());
 		}
 		return result;
@@ -131,12 +119,9 @@ public:
 	}
 
 	/*!
-	 *	@brief Return string representation of this formula.
-	 *
-	 * In LTL, brackets are needed around the until, as Until may appear nested (in other logics, Until always is the
-	 * root of a path formula); hence this function is overwritten in this class.
+	 * Returns a textual representation of the formula tree with this node as root.
 	 *
-	 * @return A string representation of the formula.
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const {
 		std::string result = "(" + left->toString();
@@ -146,55 +131,65 @@ public:
 	}
 
 	/*!
-	 * Sets the left child node.
+	 * Gets the left child node.
 	 *
-	 * @param newLeft the new left child.
+	 * @returns The left child node.
 	 */
-	void setLeft(std::shared_ptr<AbstractLtlFormula<T>> const & newLeft) {
-		left = newLeft;
+	std::shared_ptr<AbstractLtlFormula<T>> const & getLeft() const {
+		return left;
 	}
 
 	/*!
-	 * Sets the right child node.
+	 * Gets the right child node.
 	 *
-	 * @param newRight the new right child.
+	 * @returns The right child node.
 	 */
-	void setRight(std::shared_ptr<AbstractLtlFormula<T>> const & newRight) {
-		right = newRight;
+	std::shared_ptr<AbstractLtlFormula<T>> const & getRight() const {
+		return right;
 	}
 
 	/*!
-	 * @returns a pointer to the left child node
+	 * Sets the left child node.
+	 *
+	 * @param newLeft The new left child.
 	 */
-	std::shared_ptr<AbstractLtlFormula<T>> const & getLeft() const {
-		return left;
+	void setLeft(std::shared_ptr<AbstractLtlFormula<T>> const & newLeft) {
+		left = newLeft;
 	}
 
 	/*!
-	 * @returns a pointer to the right child node
+	 * Sets the right child node.
+	 *
+	 * @param newRight The new right child.
 	 */
-	std::shared_ptr<AbstractLtlFormula<T>> const & getRight() const {
-		return right;
+	void setRight(std::shared_ptr<AbstractLtlFormula<T>> const & newRight) {
+		right = newRight;
 	}
 
 	/*!
+	 * Checks if the left child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the left child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the left child is set.
 	 */
-	bool leftIsSet() const {
+	bool isLeftSet() const {
 		return left.get() != nullptr;
 	}
 
 	/*!
+	 * Checks if the right child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the right child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the right child is set.
 	 */
-	bool rightIsSet() const {
+	bool isRightSet() const {
 		return right.get() != nullptr;
 	}
 
 private:
+
+	// The left child node.
 	std::shared_ptr<AbstractLtlFormula<T>> left;
+
+	// The right child node.
 	std::shared_ptr<AbstractLtlFormula<T>> right;
 };
 
diff --git a/src/formula/prctl/AbstractPathFormula.h b/src/formula/prctl/AbstractPathFormula.h
index f8cb686b6..1caf60297 100644
--- a/src/formula/prctl/AbstractPathFormula.h
+++ b/src/formula/prctl/AbstractPathFormula.h
@@ -20,13 +20,7 @@ namespace property {
 namespace prctl {
 
 /*!
- * @brief
- * Abstract base class for Abstract path formulas.
- *
- * @attention This class is abstract.
- * @note Formula classes do not have copy constructors. The parameters of the constructors are usually the subtrees, so
- * 	     the syntax conflicts with copy constructors for unary operators. To produce an identical object, use the method
- * 	      clone().
+ * Abstract base class for Prctl path formulas.
  *
  * @note Differing from the formal definitions of PRCTL a path formula may be the root of a PRCTL formula.
  *       The result of a modelchecking process on such a formula is a vector representing the satisfaction probabilities for each state of the model.
@@ -35,8 +29,9 @@ template <class T>
 class AbstractPathFormula : public virtual storm::property::prctl::AbstractPrctlFormula<T> {
 
 public:
+
 	/*!
-	 * empty destructor
+	 * The virtual destructor.
 	 */
 	virtual ~AbstractPathFormula() {
 		// Intentionally left empty
@@ -45,10 +40,11 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones.
 	 *
 	 * @note This function is not implemented in this class.
-	 * @returns a new AND-object that is identical the called object.
+	 *
+	 * @returns A deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractPathFormula<T>> clone() const = 0;
 
diff --git a/src/formula/prctl/AbstractPrctlFormula.h b/src/formula/prctl/AbstractPrctlFormula.h
index f728110fe..e7b165afa 100644
--- a/src/formula/prctl/AbstractPrctlFormula.h
+++ b/src/formula/prctl/AbstractPrctlFormula.h
@@ -14,6 +14,8 @@ namespace storm {
 namespace property {
 namespace prctl {
 
+// Forward declarations.
+
 template <class T> class ProbabilisticBoundOperator;
 template <class T> class Eventually;
 template <class T> class Until;
@@ -27,22 +29,32 @@ namespace property {
 namespace prctl {
 
 /*!
- * Interface class for all PRCTL root formulas.
+ * This is the abstract base class for all Prctl formulas.
+ *
+ * @note While formula classes do have copy constructors using a copy constructor
+ *       will yield a formula objects whose formula subtree consists of the same objects
+ *       as the original formula. The ownership of the formula tree will be shared between
+ *       the original and the copy.
  */
 template<class T>
 class AbstractPrctlFormula : public virtual storm::property::AbstractFormula<T> {
 public:
+
+	/*!
+	 * The virtual destructor.
+	 */
 	virtual ~AbstractPrctlFormula() {
 		// Intentionally left empty
 	}
 
-	/*! Returns whether the formula is a probabilistic bound reachability formula.
-	 *  Returns true iff the formula conforms to the following pattern.
-	 *  Pattern: P[<,<=,>,>=]p ([psi U, E] phi) whith psi, phi propositional logic formulas (consisiting only of And, Or, Not and AP).
-	 *  That is, a probabilistic bound operator as root with a single until or eventually formula directly below it, whose subformulas are propositional
-	 *  (denoting some set of atomic propositions).
+	/*!
+	 * Checks whether the formula is a probabilistic bound reachability formula.
+	 * Returns true iff the formula conforms to the following pattern.
+	 * Pattern: P[<,<=,>,>=]p ([psi U, E] phi) whith psi, phi propositional logic formulas (consisiting only of And, Or, Not and AP).
+	 * That is, a probabilistic bound operator as root with a single until or eventually formula directly below it, whose subformulas are propositional
+	 * (denoting some set of atomic propositions).
 	 *
-	 *  @return True iff this is a probabilistic bound reachability formula.
+	 * @return True iff this is a probabilistic bound reachability formula.
 	 */
 	bool isProbEventuallyAP() const {
 
diff --git a/src/formula/prctl/AbstractRewardPathFormula.h b/src/formula/prctl/AbstractRewardPathFormula.h
index 949ecc422..09d0dcbf2 100644
--- a/src/formula/prctl/AbstractRewardPathFormula.h
+++ b/src/formula/prctl/AbstractRewardPathFormula.h
@@ -14,16 +14,21 @@ namespace storm {
 namespace property {
 namespace prctl {
 
-/*! Base class for reward path formulas.
+/*!
+ * Abstract base class for Prctl reward path formulas.
  *
- *  Reward path formulas are subformulas of reward bound operators.
- *  They may not be subformulas of a probabilitic bound operator.
+ * Reward path formulas may not be subformulas of a probabilitic bound operator, as they describe rewards along paths not probabilities.
  *
+ * @note Differing from the formal definitions of PRCTL a reward path formula may be the root of a PRCTL formula.
+ *       The result of a modelchecking process on such a formula is a vector representing the rewards for each state of the model.
+ *
+ * @see AbstractPrctlFormula
  */
 template <class T>
 class AbstractRewardPathFormula : public virtual storm::property::prctl::AbstractPrctlFormula<T> {
 
 public:
+
 	/*!
 	 * Empty virtual destructor.
 	 */
@@ -37,7 +42,8 @@ public:
 	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
 	 *
 	 * @note This function is not implemented in this class.
-	 * @returns a new AND-object that is identical the called object.
+	 *
+	 * @returns A deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractRewardPathFormula<T>> clone() const = 0;
 
diff --git a/src/formula/prctl/AbstractStateFormula.h b/src/formula/prctl/AbstractStateFormula.h
index d07c169a8..2da8c093b 100644
--- a/src/formula/prctl/AbstractStateFormula.h
+++ b/src/formula/prctl/AbstractStateFormula.h
@@ -17,20 +17,15 @@ namespace property {
 namespace prctl {
 
 /*!
- * @brief
- * Abstract base class for Abstract state formulas.
- *
- * @attention This class is abstract.
- * @note Formula classes do not have copy constructors. The parameters of the constructors are usually the subtrees, so
- * 	   the syntax conflicts with copy constructors for unary operators. To produce an identical object, use the method
- * 	   clone().
+ * Abstract base class for Prctl state formulas.
  */
 template <class T>
 class AbstractStateFormula : public storm::property::prctl::AbstractPrctlFormula<T> {
 
 public:
+
 	/*!
-	 * empty destructor
+	 * Empty virtual destructor.
 	 */
 	virtual ~AbstractStateFormula() {
 		// Intentionally left empty
@@ -42,7 +37,8 @@ public:
 	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
 	 *
 	 * @note This function is not implemented in this class.
-	 * @returns a new AND-object that is identical the called object.
+	 *
+	 * @returns A deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractStateFormula<T>> clone() const = 0;
 
diff --git a/src/formula/prctl/And.h b/src/formula/prctl/And.h
index 81b33ad28..c312f30c5 100644
--- a/src/formula/prctl/And.h
+++ b/src/formula/prctl/And.h
@@ -16,37 +16,45 @@ namespace storm {
 namespace property {
 namespace prctl {
 
+// Forward declaration for the interface class.
 template <class T> class And;
 
 /*!
- *	@brief Interface class for model checkers that support And.
+ * Interface class for model checkers that support And.
  *
- *	All model checkers that support the formula class And must inherit
- *	this pure virtual class.
+ * All model checkers that support the formula class And must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IAndModelChecker {
 	public:
+
+		/*!
+		 * Empty virtual destructor.
+		 */
+		virtual ~IAndModelChecker() {
+			// Intentionally left empty
+		}
+
 		/*!
-		 *	@brief Evaluates And formula within a model checker.
+		 * Evaluates an And formula within a model checker.
 		 *
-		 *	@param obj Formula object with subformulas.
-		 *	@return Result of the formula for every node.
+		 * @param obj Formula object with subformulas.
+		 * @return The modelchecking result of the formula for every state.
 		 */
 		virtual storm::storage::BitVector checkAnd(const And<T>& obj) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract formula tree with AND node as root.
+ * Class for a Prctl formula tree with an And node as root.
  *
- * Has two Abstract state formulas as sub formulas/trees.
+ * It has two state formulas as sub formulas/trees.
  *
- * As AND is commutative, the order is \e theoretically not important, but will influence the order in which
+ * As And is commutative, the order is \e theoretically not important, but will influence the order in which
  * the model checker works.
  *
- * The subtrees are seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to NULL before deletion)
+ * The object has shared ownership of its subtrees. If this object is deleted and no other object has a shared
+ * ownership of the subtrees they will be deleted as well.
  *
  * @see AbstractStateFormula
  * @see AbstractPrctlFormula
@@ -57,29 +65,25 @@ class And : public AbstractStateFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor.
-	 * Will create an AND-node without subnotes. Will not represent a complete formula!
+	 * Creates an And node without subnodes.
+	 * The resulting object will not represent a complete formula!
 	 */
-	And() {
+	And() : left(nullptr), right(nullptr) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor.
-	 * Creates an AND note with the parameters as subtrees.
+	 * Creates an And node with the parameters as subtrees.
 	 *
-	 * @param left The left sub formula
-	 * @param right The right sub formula
+	 * @param left The left sub formula.
+	 * @param right The right sub formula.
 	 */
 	And(std::shared_ptr<AbstractStateFormula<T>> const & left, std::shared_ptr<AbstractStateFormula<T>> const & right) : left(left), right(right) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Destructor.
-	 *
-	 * The subtrees are deleted with the object
-	 * (this behavior can be prevented by setting them to NULL before deletion)
+	 * Empty virtual destructor.
 	 */
 	virtual ~And() {
 		// Intentionally left empty.
@@ -88,16 +92,16 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones.
 	 *
-	 * @returns a new AND-object that is identical the called object.
+	 * @returns A new And object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractStateFormula<T>> clone() const override {
 		std::shared_ptr<And<T>> result(new And());
-		if (this->leftIsSet()) {
+		if (this->isLeftSet()) {
 		  result->setLeft(left->clone());
 		}
-		if (this->rightIsSet()) {
+		if (this->isRightSet()) {
 		  result->setRight(right->clone());
 		}
 		return result;
@@ -117,7 +121,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "(";
@@ -139,55 +145,65 @@ public:
 	}
 
 	/*!
-	 * Sets the left child node.
+	 * Gets the left child node.
 	 *
-	 * @param newLeft the new left child.
+	 * @returns The left child node.
 	 */
-	void setLeft(std::shared_ptr<AbstractStateFormula<T>> const & newLeft) {
-		left = newLeft;
+	std::shared_ptr<AbstractStateFormula<T>> const & getLeft() const {
+		return left;
 	}
 
 	/*!
-	 * Sets the right child node.
+	 * Gets the right child node.
 	 *
-	 * @param newRight the new right child.
+	 * @returns The right child node.
 	 */
-	void setRight(std::shared_ptr<AbstractStateFormula<T>> const & newRight) {
-		right = newRight;
+	std::shared_ptr<AbstractStateFormula<T>> const & getRight() const {
+		return right;
 	}
 
 	/*!
-	 * @returns a reference to the left child node
+	 * Sets the left child node.
+	 *
+	 * @param newLeft The new left child.
 	 */
-	std::shared_ptr<AbstractStateFormula<T>> const & getLeft() const {
-		return left;
+	void setLeft(std::shared_ptr<AbstractStateFormula<T>> const & newLeft) {
+		left = newLeft;
 	}
 
 	/*!
-	 * @returns a reference to the right child node
+	 * Sets the right child node.
+	 *
+	 * @param newRight The new right child.
 	 */
-	std::shared_ptr<AbstractStateFormula<T>> const & getRight() const {
-		return right;
+	void setRight(std::shared_ptr<AbstractStateFormula<T>> const & newRight) {
+		right = newRight;
 	}
 
 	/*!
+	 * Checks if the left child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the left child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the left child is set.
 	 */
-	bool leftIsSet() const {
+	bool isLeftSet() const {
 		return left.get() != nullptr;
 	}
 
 	/*!
+	 * Checks if the right child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the right child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the right child is set.
 	 */
-	bool rightIsSet() const {
+	bool isRightSet() const {
 		return right.get() != nullptr;
 	}
 
 private:
+
+	// The left child node.
 	std::shared_ptr<AbstractStateFormula<T>> left;
+
+	// The right child node.
 	std::shared_ptr<AbstractStateFormula<T>> right;
 
 };
diff --git a/src/formula/prctl/Ap.h b/src/formula/prctl/Ap.h
index 7df3cabd8..15bd442ca 100644
--- a/src/formula/prctl/Ap.h
+++ b/src/formula/prctl/Ap.h
@@ -15,31 +15,39 @@ namespace storm {
 namespace property {
 namespace prctl {
 
+// Forward declaration for the interface class.
 template <class T> class Ap;
 
 /*!
- *  @brief Interface class for model checkers that support Ap.
+ * Interface class for model checkers that support Ap.
  *
- *  All model checkers that support the formula class Ap must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class Ap must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IApModelChecker {
     public:
+
+		/*!
+		 * Empty virtual destructor.
+		 */
+		virtual ~IApModelChecker() {
+			// Intentionally left empty
+		}
+
 		/*!
-         *  @brief Evaluates Ap formula within a model checker.
+         * Evaluates an Ap formula within a model checker.
          *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
+         * @param obj Formula object with subformulas.
+         * @return The modelchecking result of the formula for every state.
          */
         virtual storm::storage::BitVector checkAp(const Ap<T>& obj) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract formula tree with atomic proposition as root.
+ * Class for a Prctl formula tree with an atomic proposition as root.
  *
- * This class represents the leaves in the formula tree.
+ * This class represents leaves in the formula tree.
  *
  * @see AbstractPrctlFormula
  * @see AbstractStateFormula
@@ -50,19 +58,16 @@ class Ap : public AbstractStateFormula<T> {
 public:
 
 	/*!
-	 * Constructor
+	 * Creates a new atomic proposition leaf, with the given label.
 	 *
-	 * Creates a new atomic proposition leaf, with the label Ap
-	 *
-	 * @param ap The string representing the atomic proposition
+	 * @param ap A string representing the atomic proposition.
 	 */
-	Ap(std::string ap) {
-		this->ap = ap;
+	Ap(std::string ap) : ap(ap) {
+		// Intentionally left empty.
 	}
 
 	/*!
-	 * Destructor.
-	 * At this time, empty...
+	 * Empty virtual destructor.
 	 */
 	virtual ~Ap() {
 		// Intentionally left empty
@@ -71,12 +76,12 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones.
 	 *
-	 * @returns a new AND-object that is identical the called object.
+	 * @returns A new Ap object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractStateFormula<T>> clone() const override {
-		std::shared_ptr<AbstractStateFormula<T>> result(new Ap(this->getAp()));
+		auto result = std::make_shared<Ap<T>>(this->getAp());
 		return result;
 	}
 
@@ -93,6 +98,15 @@ public:
 		return modelChecker.template as<IApModelChecker>()->checkAp(*this);
 	}
 
+	/*!
+	 * A string representing the atomic proposition.
+	 *
+	 * @returns A string representing the leaf.
+	 */
+	virtual std::string toString() const override {
+		return getAp();
+	}
+
 	/*!
 	 * Returns whether the formula is a propositional logic formula.
 	 * That is, this formula and all its subformulas consist only of And, Or, Not and AP.
@@ -104,21 +118,17 @@ public:
 	}
 
 	/*!
-	 * @returns the name of the atomic proposition
-	 */
-	const std::string& getAp() const {
-		return ap;
-	}
-
-	/*!
-	 * @returns a string representation of the leaf.
+	 * Gets the name of the atomic proposition.
 	 *
+	 * @returns The name of the atomic proposition.
 	 */
-	virtual std::string toString() const override {
-		return getAp();
+	std::string const & getAp() const {
+		return ap;
 	}
 
 private:
+
+	// The atomic proposition referenced by this leaf.
 	std::string ap;
 };
 
diff --git a/src/formula/prctl/BoundedEventually.h b/src/formula/prctl/BoundedEventually.h
index 16b7df1d8..920a6a073 100644
--- a/src/formula/prctl/BoundedEventually.h
+++ b/src/formula/prctl/BoundedEventually.h
@@ -18,37 +18,47 @@ namespace storm {
 namespace property {
 namespace prctl{
 
+// Forward declaration for the interface class.
 template <class T> class BoundedEventually;
 
 /*!
- *  @brief Interface class for model checkers that support BoundedEventually.
+ * Interface class for model checkers that support BoundedEventually.
  *   
- *  All model checkers that support the formula class BoundedEventually must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class BoundedEventually must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IBoundedEventuallyModelChecker {
     public:
+
+		/*!
+		 * Empty virtual destructor.
+		 */
+		virtual ~IBoundedEventuallyModelChecker() {
+			// Intentionally left empty
+		}
+
 		/*!
-         *  @brief Evaluates BoundedEventually formula within a model checker.
+         * Evaluates a BoundedEventually formula within a model checker.
          *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
+         * @param obj Formula object with subformulas.
+         * @param qualitative A flag indicating whether the formula only needs to be evaluated qualitatively, i.e. if the
+         *                    results are only compared against the bounds 0 and 1.
+		 * @return The modelchecking result of the formula for every state.
          */
         virtual std::vector<T> checkBoundedEventually(const BoundedEventually<T>& obj, bool qualitative) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract (path) formula tree with a BoundedEventually node as root.
+ * Class for a Prctl (path) formula tree with a BoundedEventually node as root.
  *
- * Has one Abstract state formulas as sub formula/tree.
+ * Has one state formula as subformula/tree.
  *
  * @par Semantics
  * The formula holds iff in at most \e bound steps, formula \e child holds.
  *
- * The subtrees are seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to NULL before deletion)
+ * The object has shared ownership of its subtree. If this object is deleted and no other object has a shared
+ * ownership of the subtree it will be deleted as well.
  *
  * @see AbstractPathFormula
  * @see AbstractPrctlFormula
@@ -57,28 +67,27 @@ template <class T>
 class BoundedEventually : public AbstractPathFormula<T> {
 
 public:
+
 	/*!
-	 * Empty constructor
+	 * Creates a BoundedEventually node without a subnode.
+	 * The resulting object will not represent a complete formula!
 	 */
-	BoundedEventually() : child(nullptr), bound(0){
+	BoundedEventually() : child(nullptr), bound(0) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor
+	 * Creates a BoundedEventually node using the given parameters.
 	 *
-	 * @param child The child formula subtree
-	 * @param bound The maximal number of steps
+	 * @param child The child formula subtree.
+	 * @param bound The maximal number of steps within which the subformula must hold.
 	 */
-	BoundedEventually(std::shared_ptr<AbstractStateFormula<T>> child, uint_fast64_t bound) : child(child), bound(bound){
+	BoundedEventually(std::shared_ptr<AbstractStateFormula<T>> child, uint_fast64_t bound) : child(child), bound(bound) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Destructor.
-	 *
-	 * Also deletes the subtrees.
-	 * (this behaviour can be prevented by setting the subtrees to NULL before deletion)
+	 * Empty virtual destructor.
 	 */
 	virtual ~BoundedEventually() {
 	  // Intentionally left empty.
@@ -87,14 +96,14 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new BoundedUntil-object that is identical the called object.
+	 * @returns A new BoundedEventually object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractPathFormula<T>> clone() const override {
 		std::shared_ptr<BoundedEventually<T>> result(new BoundedEventually<T>());
 		result->setBound(bound);
-		if (this->childIsSet()) {
+		if (this->isChildSet()) {
 			result->setChild(child->clone());
 		}
 		return result;
@@ -115,7 +124,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "F<=";
@@ -126,46 +137,56 @@ public:
 	}
 
 	/*!
-	 * @returns the child node
+	 * Gets the child node.
+	 *
+	 * @returns The child node.
 	 */
 	std::shared_ptr<AbstractStateFormula<T>> const & getChild() const {
 		return child;
 	}
 
 	/*!
-	 * Sets the subtree
-	 * @param child the new child node
+	 * Sets the subtree.
+	 *
+	 * @param child The new child.
 	 */
 	void setChild(std::shared_ptr<AbstractStateFormula<T>> const & child) {
 		this->child = child;
 	}
 
 	/*!
+	 * Checks if the child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the child is set.
 	 */
-	bool childIsSet() const {
+	bool isChildSet() const {
 		return child.get() != nullptr;
 	}
 
 	/*!
-	 * @returns the maximally allowed number of steps for the bounded until operator
+	 * Gets the maximally allowed number of steps for the bounded eventually operator.
+	 *
+	 * @returns The bound.
 	 */
 	uint_fast64_t getBound() const {
 		return bound;
 	}
 
 	/*!
-	 * Sets the maximally allowed number of steps for the bounded until operator
+	 * Sets the maximally allowed number of steps for the bounded eventually operator.
 	 *
-	 * @param bound the new bound.
+	 * @param bound The new bound.
 	 */
 	void setBound(uint_fast64_t bound) {
 		this->bound = bound;
 	}
 
 private:
+
+	// The child node.
 	std::shared_ptr<AbstractStateFormula<T>> child;
+
+	// The maximal number of steps within which the subformula must hold.
 	uint_fast64_t bound;
 };
 
diff --git a/src/formula/prctl/BoundedNaryUntil.h b/src/formula/prctl/BoundedNaryUntil.h
index 1c9863ac7..c6e4092e9 100644
--- a/src/formula/prctl/BoundedNaryUntil.h
+++ b/src/formula/prctl/BoundedNaryUntil.h
@@ -21,33 +21,42 @@ namespace storm {
 namespace property {
 namespace prctl {
 
-
+// Forward declaration for the interface class.
 template <class T> class BoundedNaryUntil;
 
 /*!
- *  @brief Interface class for model checkers that support BoundedNaryUntil.
+ * Interface class for model checkers that support BoundedNaryUntil.
  *   
- *  All model checkers that support the formula class BoundedNaryUntil must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class BoundedNaryUntil must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IBoundedNaryUntilModelChecker {
     public:
+
+		/*!
+		 * Empty virtual destructor.
+		 */
+		virtual ~IBoundedNaryUntilModelChecker() {
+			// Intentionally left empty
+		}
+
 		/*!
-         *  @brief Evaluates BoundedNaryUntil formula within a model checker.
+         * Evaluates BoundedNaryUntil formula within a model checker.
          *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
+         * @param obj Formula object with subformulas.
+         * @param qualitative A flag indicating whether the formula only needs to be evaluated qualitatively, i.e. if the
+         *                    results are only compared against the bounds 0 and 1.
+         * @return Result of the formula for every state.
          */
         virtual std::vector<T> checkBoundedNaryUntil(const BoundedNaryUntil<T>& obj, bool qualitative) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract (path) formula tree with a BoundedNaryUntil node as root.
+ * Class for a Prctl (path) formula tree with a BoundedNaryUntil node as root.
  *
- * Has at least two Abstract state formulas as sub formulas and an interval
- * associated with all but the first sub formula. We'll call the first one
+ * Has at least two state formulas as sub formulas and an interval
+ * associated with all but the first sub formula. We will call the first one
  * \e left and all other one \e right.
  *
  * @par Semantics
@@ -55,8 +64,8 @@ class IBoundedNaryUntilModelChecker {
  * formulas holds after a number of steps contained in the interval
  * associated with this formula.
  *
- * The subtrees are seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to NULL before deletion)
+ * The object has shared ownership of its subtrees. If this object is deleted and no other object has a shared
+ * ownership of the subtrees they will be deleted as well.
  *
  * @see AbstractPathFormula
  * @see AbstractPrctlFormula
@@ -67,27 +76,25 @@ class BoundedNaryUntil : public AbstractPathFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor
+	 * Creates a BoundedNaryUntil node without subnodes.
+	 * The resulting object will not represent a complete formula!
 	 */
 	BoundedNaryUntil() : left(nullptr), right() {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor
+	 * Creates a BoundedNaryUntil node with the parameters as subtrees.
 	 *
-	 * @param left The left formula subtree
-	 * @param right The left formula subtree
+	 * @param left The left formula subtree.
+	 * @param right The right formula subtrees with their associated intervals.
 	 */
 	BoundedNaryUntil(std::shared_ptr<AbstractStateFormula<T>> const & left, std::vector<std::tuple<std::shared_ptr<AbstractStateFormula<T>>,T,T>> const & right) : left(left), right(right) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Destructor.
-	 *
-	 * Also deletes the subtrees.
-	 * (this behaviour can be prevented by setting the subtrees to NULL before deletion)
+	 * Empty virtual destructor.
 	 */
 	virtual ~BoundedNaryUntil() {
 	  // Intentionally left empty.
@@ -96,16 +103,16 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones.
 	 *
-	 * @returns a new BoundedNaryUntil-object that is identical the called object.
+	 * @returns A new BoundedNaryUntil object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractPathFormula<T>> clone() const override {
 		std::shared_ptr<BoundedNaryUntil<T>> result(new BoundedNaryUntil<T>());
-		if (this->leftIsSet()) {
+		if (this->isLeftSet()) {
 			result->setLeft(left->clone());
 		}
-		if (this->rightIsSet()) {
+		if (this->isRightSet()) {
 			std::vector<std::tuple<std::shared_ptr<AbstractStateFormula<T>>,T,T>> newright;
 			for (auto it = right->begin(); it != right->end(); ++it) {
 				newright.push_back(std::tuple<std::shared_ptr<AbstractStateFormula<T>>,T,T>(std::get<0>(*it)->clone(), std::get<1>(*it), std::get<2>(*it)));
@@ -130,7 +137,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::stringstream result;
@@ -143,60 +152,76 @@ public:
 	}
 
 	/*!
-	 * Sets the left child node.
+	 * Gets the left child node.
 	 *
-	 * @param newLeft the new left child.
+	 * @returns The left child node.
 	 */
-	void setLeft(std::shared_ptr<AbstractStateFormula<T>> const & newLeft) {
-		left = newLeft;
+	std::shared_ptr<AbstractStateFormula<T>> const & getLeft() const {
+		return left;
 	}
 
-	void setRight(std::vector<std::tuple<std::shared_ptr<AbstractStateFormula<T>>,T,T>> const & newRight) {
-		right = newRight;
+	/*!
+	 * Gets the right child nodes and their associated intervals.
+	 *
+	 * @returns A vector containing the right children as well as the associated intervals.
+	 */
+	std::vector<std::tuple<std::shared_ptr<AbstractStateFormula<T>>,T,T>> const & getRight() const {
+		return right;
 	}
 
 	/*!
+	 * Sets the left child node.
 	 *
-	 * @return True if the left child is set, i.e. it does not point to nullptr; false otherwise
+	 * @param newLeft The new left child.
 	 */
-	bool leftIsSet() const {
-		return left != nullptr;
+	void setLeft(std::shared_ptr<AbstractStateFormula<T>> const & newLeft) {
+		left = newLeft;
 	}
 
 	/*!
+	 * Sets the right child nodes.
 	 *
-	 * @return True if the right child is set, i.e. it is not empty; false otherwise
+	 * @param newRight A vector containing the new right children as well as the associated intervals.
 	 */
-	bool rightIsSet() const {
-		return !(right.empty());
+	void setRight(std::vector<std::tuple<std::shared_ptr<AbstractStateFormula<T>>,T,T>> const & newRight) {
+		right = newRight;
 	}
 
 	/*!
-	 * Sets the right child node.
+	 * Adds a new rightmost child node.
 	 *
-	 * @param newRight the new right child.
+	 * @param newRight The new child.
+	 * @param upperBound The upper bound of the associated interval.
+	 * @param lowerBound The lower bound of the associated interval.
 	 */
 	void addRight(std::shared_ptr<AbstractStateFormula<T>> const & newRight, T upperBound, T lowerBound) {
 		right.push_back(std::tuple<std::shared_ptr<AbstractStateFormula<T>>,T,T>(newRight, upperBound, lowerBound));
 	}
 
 	/*!
-	 * @returns a pointer to the left child node
+	 * Checks if the left child is set, i.e. it does not point to null.
+	 *
+	 * @return True iff the left child is set.
 	 */
-	std::shared_ptr<AbstractStateFormula<T>> const & getLeft() const {
-		return left;
+	bool isLeftSet() const {
+		return left != nullptr;
 	}
 
 	/*!
-	 * @returns a pointer to the right child nodes.
+	 * Checks if the right child is set, i.e. it contains at least one entry.
+	 *
+	 * @return True iff the right child is set.
 	 */
-	std::vector<std::tuple<std::shared_ptr<AbstractStateFormula<T>>,T,T>> const & getRight() const {
-		return right;
+	bool isRightSet() const {
+		return !(right.empty());
 	}
 
-
 private:
+
+	// The left formula subtree.
 	std::shared_ptr<AbstractStateFormula<T>> left;
+
+	// The right formula subtrees with their associated intervals.
 	std::vector<std::tuple<std::shared_ptr<AbstractStateFormula<T>>,T,T>> right;
 };
 
diff --git a/src/formula/prctl/BoundedUntil.h b/src/formula/prctl/BoundedUntil.h
index 92d119583..ec0b59f51 100644
--- a/src/formula/prctl/BoundedUntil.h
+++ b/src/formula/prctl/BoundedUntil.h
@@ -18,38 +18,48 @@ namespace storm {
 namespace property {
 namespace prctl {
 
+// Forward declaration for the interface class.
 template <class T> class BoundedUntil;
 
 /*!
- *  @brief Interface class for model checkers that support BoundedUntil.
+ * Interface class for model checkers that support BoundedUntil.
  *   
- *  All model checkers that support the formula class BoundedUntil must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class BoundedUntil must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IBoundedUntilModelChecker {
     public:
+
 		/*!
-         *  @brief Evaluates BoundedUntil formula within a model checker.
+		 * Empty virtual destructor.
+		 */
+		virtual ~IBoundedUntilModelChecker() {
+			// Intentionally left empty
+		}
+
+		/*!
+         * Evaluates a BoundedUntil formula within a model checker.
          *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
+         * @param obj Formula object with subformulas.
+         * @param qualitative A flag indicating whether the formula only needs to be evaluated qualitatively, i.e. if the
+         *                    results are only compared against the bounds 0 and 1.
+		 * @return The modelchecking result of the formula for every state.
          */
         virtual std::vector<T> checkBoundedUntil(const BoundedUntil<T>& obj, bool qualitative) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract (path) formula tree with a BoundedUntil node as root.
+ * Class for a Prctl (path) formula tree with a BoundedUntil node as root.
  *
- * Has two Abstract state formulas as sub formulas/trees.
+ * Has two Prctl state formulas as sub formulas/trees.
  *
  * @par Semantics
  * The formula holds iff in at most \e bound steps, formula \e right (the right subtree) holds, and before,
  * \e left holds.
  *
- * The subtrees are seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to NULL before deletion)
+ * The object has shared ownership of its subtrees. If this object is deleted and no other object has a shared
+ * ownership of the subtrees they will be deleted as well.
  *
  * @see AbstractPathFormula
  * @see AbstractPrctlFormula
@@ -60,26 +70,26 @@ class BoundedUntil : public AbstractPathFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor
+	 * Creates a BoundedUntil node without subnodes.
+	 * The resulting object will not represent a complete formula!
 	 */
-	BoundedUntil() : left(nullptr), right(nullptr), bound(0){
+	BoundedUntil() : left(nullptr), right(nullptr), bound(0) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor
+	 * Creates a BoundedUntil node using the given parameters.
 	 *
-	 * @param left The left formula subtree
-	 * @param right The left formula subtree
-	 * @param bound The maximal number of steps
+	 * @param left The left formula subtree.
+	 * @param right The right formula subtree.
+	 * @param bound The maximal number of steps within which the right subformula must hold.
 	 */
 	BoundedUntil(std::shared_ptr<AbstractStateFormula<T>> const & left, std::shared_ptr<AbstractStateFormula<T>> const & right, uint_fast64_t bound) : left(left), right(right), bound(bound) {
 		// Intentionally left empty.
 	}
+
 	/*!
-	 * Destructor.
-	 *
-	 * Deletes the subtrees iff this object is the only owner of them.
+	 * Empty virtual destructor.
 	 */
 	virtual ~BoundedUntil() {
 		// Intentionally left empty.
@@ -88,17 +98,17 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new BoundedUntil-object that is identical the called object.
+	 * @returns A new BoundedUntil object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractPathFormula<T>> clone() const override {
 		std::shared_ptr<BoundedUntil<T>> result(new BoundedUntil<T>());
 		result->setBound(bound);
-		if (this->leftIsSet()) {
+		if (this->isLeftSet()) {
 			result->setLeft(left->clone());
 		}
-		if (this->rightIsSet()) {
+		if (this->isRightSet()) {
 			result->setRight(right->clone());
 		}
 		return result;
@@ -119,7 +129,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = left->toString();
@@ -131,72 +143,86 @@ public:
 	}
 
 	/*!
-	 * Sets the left child node.
+	 * Gets the left child node.
 	 *
-	 * @param newLeft the new left child.
+	 * @returns The left child node.
 	 */
-	void setLeft(std::shared_ptr<AbstractStateFormula<T>> const & newLeft) {
-		left = newLeft;
+	std::shared_ptr<AbstractStateFormula<T>> const & getLeft() const {
+		return left;
 	}
 
 	/*!
-	 * Sets the right child node.
+	 * Gets the right child node.
 	 *
-	 * @param newRight the new right child.
+	 * @returns The right child node.
 	 */
-	void setRight(std::shared_ptr<AbstractStateFormula<T>> const & newRight) {
-		right = newRight;
+	std::shared_ptr<AbstractStateFormula<T>> const & getRight() const {
+		return right;
 	}
 
 	/*!
-	 * @returns a pointer to the left child node
+	 * Sets the left child node.
+	 *
+	 * @param newLeft The new left child.
 	 */
-	std::shared_ptr<AbstractStateFormula<T>> const & getLeft() const {
-		return left;
+	void setLeft(std::shared_ptr<AbstractStateFormula<T>> const & newLeft) {
+		left = newLeft;
 	}
 
 	/*!
-	 * @returns a pointer to the right child node
+	 * Sets the right child node.
+	 *
+	 * @param newRight The new right child.
 	 */
-	std::shared_ptr<AbstractStateFormula<T>> const & getRight() const {
-		return right;
+	void setRight(std::shared_ptr<AbstractStateFormula<T>> const & newRight) {
+		right = newRight;
 	}
 
 	/*!
+	 * Checks if the left child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the left child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the left child is set.
 	 */
-	bool leftIsSet() const {
+	bool isLeftSet() const {
 		return left.get() != nullptr;
 	}
 
 	/*!
+	 * Checks if the right child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the right child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the right child is set.
 	 */
-	bool rightIsSet() const {
+	bool isRightSet() const {
 		return right.get() != nullptr;
 	}
 
 	/*!
-	 * @returns the maximally allowed number of steps for the bounded until operator
+	 * Gets the maximally allowed number of steps for the bounded until operator.
+	 *
+	 * @returns The bound.
 	 */
 	uint_fast64_t getBound() const {
 		return bound;
 	}
 
 	/*!
-	 * Sets the maximally allowed number of steps for the bounded until operator
+	 * Sets the maximally allowed number of steps for the bounded until operator.
 	 *
-	 * @param bound the new bound.
+	 * @param bound The new bound.
 	 */
 	void setBound(uint_fast64_t bound) {
 		this->bound = bound;
 	}
 
 private:
+
+	// The left child node.
 	std::shared_ptr<AbstractStateFormula<T>> left;
+
+	// The right child node.
 	std::shared_ptr<AbstractStateFormula<T>> right;
+
+	// The maximal number of steps within which the subformulas must hold.
 	uint_fast64_t bound;
 };
 
diff --git a/src/formula/prctl/CumulativeReward.h b/src/formula/prctl/CumulativeReward.h
index 4a94c021b..fd51db72c 100644
--- a/src/formula/prctl/CumulativeReward.h
+++ b/src/formula/prctl/CumulativeReward.h
@@ -15,32 +15,44 @@ namespace storm {
 namespace property {
 namespace prctl {
 
+// Forward declaration for the interface class.
 template <class T> class CumulativeReward;
 
 /*!
- *  @brief Interface class for model checkers that support CumulativeReward.
+ * Interface class for model checkers that support CumulativeReward.
  *
- *  All model checkers that support the formula class CumulativeReward must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class CumulativeReward must inherit
+ * this pure virtual class.
  */
 template <class T>
 class ICumulativeRewardModelChecker {
     public:
+
+		/*!
+		 * Empty virtual destructor.
+		 */
+		virtual ~ICumulativeRewardModelChecker() {
+			// Intentionally left empty
+		}
+
 		/*!
-         *  @brief Evaluates CumulativeReward formula within a model checker.
+         * Evaluates CumulativeReward formula within a model checker.
          *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
+         * @param obj Formula object with subformulas.
+         * @param qualitative A flag indicating whether the formula only needs to be evaluated qualitatively, i.e. if the
+         *                    results are only compared against the bounds 0 and 1.
+         * @return Result of the formula for every node.
          */
         virtual std::vector<T> checkCumulativeReward(const CumulativeReward<T>& obj, bool qualitative) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract (path) formula tree with a Cumulative Reward node as root.
+ * Class for a Prctl (reward path) formula tree with a Cumulative Reward node as root.
  *
- * The subtrees are seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to NULL before deletion)
+ * Given a path of finite length.
+ * The sum of all rewards received upon entering each state of the path is the cumulative reward of the path.
+ * The cumulative reward for a state s at time \e bound is the expected cumulative reward of a path of length \e bound starting in s.
+ * In the continuous case all paths that need at most time \e bound are considered.
  *
  * @see AbstractPathFormula
  * @see AbstractPrctlFormula
@@ -49,19 +61,15 @@ template <class T>
 class CumulativeReward : public AbstractRewardPathFormula<T> {
 
 public:
-	/*!
-	 * Empty constructor
-	 */
-	CumulativeReward() : bound(0){
-		// Intentionally left empty.
-	}
 
 	/*!
-	 * Constructor
+	 * Creates a CumulativeReward node with the given bound.
+	 *
+	 * If no bound is given it defaults to 0, referencing the state reward received upon entering the state s itself.
 	 *
-	 * @param bound The time bound of the reward formula
+	 * @param bound The time instance of the reward formula.
 	 */
-	CumulativeReward(T bound) : bound(bound){
+	CumulativeReward(T bound = 0) : bound(bound){
 		// Intentionally left empty.
 	}
 
@@ -75,9 +83,9 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new CumulativeReward-object that is identical the called object.
+	 * @returns A new CumulativeReward object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractRewardPathFormula<T>> clone() const override {
 		std::shared_ptr<CumulativeReward<T>> result(new CumulativeReward(this->getBound()));
@@ -99,7 +107,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "C <= ";
@@ -108,22 +118,26 @@ public:
 	}
 
 	/*!
-	 * @returns the time instance for the instantaneous reward operator
+	 * Gets the time bound for the paths considered.
+	 *
+	 * @returns The time bound for the paths considered.
 	 */
 	T getBound() const {
 		return bound;
 	}
 
 	/*!
-	 * Sets the the time instance for the instantaneous reward operator
+	 * Sets the time bound for the paths considered.
 	 *
-	 * @param bound the new bound.
+	 * @param bound The new bound.
 	 */
 	void setBound(T bound) {
 		this->bound = bound;
 	}
 
 private:
+
+	// The time bound for the paths considered.
 	T bound;
 };
 
diff --git a/src/formula/prctl/Eventually.h b/src/formula/prctl/Eventually.h
index 77dcb3c73..6d22e1dd4 100644
--- a/src/formula/prctl/Eventually.h
+++ b/src/formula/prctl/Eventually.h
@@ -1,5 +1,5 @@
 /*
- * Next.h
+ * Eventually.h
  *
  *  Created on: 26.12.2012
  *      Author: Christian Dehnert
@@ -16,37 +16,47 @@ namespace storm {
 namespace property {
 namespace prctl {
 
+// Forward declaration for the interface class.
 template <class T> class Eventually;
 
 /*!
- *  @brief Interface class for model checkers that support Eventually.
+ * Interface class for model checkers that support Eventually.
  *
- *  All model checkers that support the formula class Eventually must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class Eventually must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IEventuallyModelChecker {
     public:
+
 		/*!
-         *  @brief Evaluates Eventually formula within a model checker.
-         *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
-         */
+		 * Empty virtual destructor.
+		 */
+		virtual ~IEventuallyModelChecker() {
+			// Intentionally left empty.
+		}
+
+		/*!
+		 * Evaluates an Eventually formula within a model checker.
+		 *
+		 * @param obj Formula object with subformulas.
+		 * @param qualitative A flag indicating whether the formula only needs to be evaluated qualitatively, i.e. if the
+         *                    results are only compared against the bounds 0 and 1.
+		 * @return The modelchecking result of the formula for every state.
+		 */
         virtual std::vector<T> checkEventually(const Eventually<T>& obj, bool qualitative) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract (path) formula tree with an Eventually node as root.
+ * Class for a Prctl (path) formula tree with an Eventually node as root.
  *
- * Has one Abstract state formula as sub formula/tree.
+ * Has one state formula as sub formula/tree.
  *
  * @par Semantics
- * The formula holds iff eventually \e child holds.
+ * The formula holds iff eventually formula \e child holds.
  *
- * The subtree is seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to nullptr before deletion)
+ * The object has shared ownership of its subtree. If this object is deleted and no other object has a shared
+ * ownership of the subtree it will be deleted as well.
  *
  * @see AbstractPathFormula
  * @see AbstractPrctlFormula
@@ -57,25 +67,24 @@ class Eventually : public AbstractPathFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor
+	 * Creates an Eventually node without a subnode.
+	 * The resulting object will not represent a complete formula!
 	 */
 	Eventually() : child(nullptr) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor
+	 * Creates an Eventually node using the given parameter.
 	 *
-	 * @param child The child node
+	 * @param child The child formula subtree.
 	 */
 	Eventually(std::shared_ptr<AbstractStateFormula<T>> const & child) : child(child){
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor.
-	 *
-	 * Deletes the subtree iff this object is the last remaining owner of the subtree.
+	 * Empty virtual destructor.
 	 */
 	virtual ~Eventually() {
 		// Intentionally left empty.
@@ -84,13 +93,13 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new Eventually-object that is identical the called object.
+	 * @returns A new Eventually object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractPathFormula<T>> clone() const override {
 		std::shared_ptr<Eventually<T>> result(new Eventually<T>());
-		if (this->childIsSet()) {
+		if (this->isChildSet()) {
 			result->setChild(child->clone());
 		}
 		return result;
@@ -110,7 +119,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "F ";
@@ -119,29 +130,35 @@ public:
 	}
 
 	/*!
-	 * @returns the child node
+	 * Gets the child node.
+	 *
+	 * @returns The child node.
 	 */
 	std::shared_ptr<AbstractStateFormula<T>> const & getChild() const {
 		return child;
 	}
 
 	/*!
-	 * Sets the subtree
-	 * @param child the new child node
+	 * Sets the subtree.
+	 *
+	 * @param child The new child.
 	 */
 	void setChild(std::shared_ptr<AbstractStateFormula<T>> const & child) {
 		this->child = child;
 	}
 
 	/*!
+	 * Checks if the child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the child node is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the child is set.
 	 */
-	bool childIsSet() const {
+	bool isChildSet() const {
 		return child.get() != nullptr;
 	}
 
 private:
+
+	// The child node.
 	std::shared_ptr<AbstractStateFormula<T>> child;
 };
 
diff --git a/src/formula/prctl/Globally.h b/src/formula/prctl/Globally.h
index 8f0b9c910..12f29f19d 100644
--- a/src/formula/prctl/Globally.h
+++ b/src/formula/prctl/Globally.h
@@ -1,5 +1,5 @@
 /*
- * Next.h
+ * Globally.h
  *
  *  Created on: 26.12.2012
  *      Author: Christian Dehnert
@@ -16,37 +16,47 @@ namespace storm {
 namespace property {
 namespace prctl {
 
+// Forward declaration for the interface class.
 template <class T> class Globally;
 
 /*!
- *  @brief Interface class for model checkers that support Globally.
+ * Interface class for model checkers that support Globally.
  *   
- *  All model checkers that support the formula class Globally must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class Globally must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IGloballyModelChecker {
     public:
+
 		/*!
-         *  @brief Evaluates Globally formula within a model checker.
-         *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
-         */
+		 * Empty virtual destructor.
+		 */
+		virtual ~IGloballyModelChecker() {
+			// Intentionally left empty
+		}
+
+		/*!
+		 * Evaluates a Globally formula within a model checker.
+		 *
+		 * @param obj Formula object with subformulas.
+		 * @param qualitative A flag indicating whether the formula only needs to be evaluated qualitatively, i.e. if the
+         *                    results are only compared against the bounds 0 and 1.
+		 * @return The modelchecking result of the formula for every state.
+		 */
         virtual std::vector<T> checkGlobally(const Globally<T>& obj, bool qualitative) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract (path) formula tree with a Globally node as root.
+ * Class for an Prctl (path) formula tree with a Globally node as root.
  *
- * Has one Abstract state formula as sub formula/tree.
+ * Has one state formula as sub formula/tree.
  *
  * @par Semantics
- * The formula holds iff globally \e child holds.
+ * The formula holds iff globally formula \e child holds.
  *
- * The subtree is seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to nullptr before deletion)
+ * The object has shared ownership of its subtree. If this object is deleted and no other object has a shared
+ * ownership of the subtree it will be deleted as well.
  *
  * @see AbstractPathFormula
  * @see AbstractPrctlFormula
@@ -57,25 +67,24 @@ class Globally : public AbstractPathFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor
+	 * Creates a Globally node without a subnode.
+	 * The resulting object will not represent a complete formula!
 	 */
 	Globally() : child(nullptr){
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor
+	 * Creates a Globally node using the given parameter.
 	 *
-	 * @param child The child node
+	 * @param child The child formula subtree.
 	 */
 	Globally(std::shared_ptr<AbstractStateFormula<T>> const & child) : child(child){
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Destructor.
-	 *
-	 * Deletes the subtree iff this object is the last remaining owner of the subtree.
+	 * Empty virtual destructor.
 	 */
 	virtual ~Globally() {
 		// Intentionally left empty.
@@ -84,13 +93,13 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new Globally-object that is identical the called object.
+	 * @returns A new Globally object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractPathFormula<T>> clone() const override {
 		std::shared_ptr<Globally<T>> result(new Globally<T>());
-		if (this->childIsSet()) {
+		if (this->isChildSet()) {
 			result->setChild(child->clone());
 		}
 		return result;
@@ -110,7 +119,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "G ";
@@ -119,29 +130,35 @@ public:
 	}
 
 	/*!
-	 * @returns the child node
+	 * Gets the child node.
+	 *
+	 * @returns The child node.
 	 */
 	std::shared_ptr<AbstractStateFormula<T>> const & getChild() const {
 		return child;
 	}
 
 	/*!
-	 * Sets the subtree
-	 * @param child the new child node
+	 * Sets the subtree.
+	 *
+	 * @param child The new child.
 	 */
 	void setChild(std::shared_ptr<AbstractStateFormula<T>> const & child) {
 		this->child = child;
 	}
 
 	/*!
+	 * Checks if the child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the child node is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the child is set.
 	 */
-	bool childIsSet() const {
+	bool isChildSet() const {
 		return child.get() != nullptr;
 	}
 
 private:
+
+	// The child node.
 	std::shared_ptr<AbstractStateFormula<T>> child;
 };
 
diff --git a/src/formula/prctl/InstantaneousReward.h b/src/formula/prctl/InstantaneousReward.h
index 18cf7eeae..c8f61b120 100644
--- a/src/formula/prctl/InstantaneousReward.h
+++ b/src/formula/prctl/InstantaneousReward.h
@@ -16,32 +16,44 @@ namespace storm {
 namespace property {
 namespace prctl {
 
+// Forward declaration for the interface class.
 template <class T> class InstantaneousReward;
 
 /*!
- *  @brief Interface class for model checkers that support InstantaneousReward.
+ * Interface class for model checkers that support InstantaneousReward.
  *
- *  All model checkers that support the formula class InstantaneousReward must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class InstantaneousReward must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IInstantaneousRewardModelChecker {
     public:
+
+		/*!
+		 * Empty virtual destructor.
+		 */
+		virtual ~IInstantaneousRewardModelChecker() {
+			// Intentionally left empty
+		}
+
 		/*!
-         *  @brief Evaluates InstantaneousReward formula within a model checker.
+         * Evaluates an InstantaneousReward formula within a model checker.
          *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
+         * @param obj Formula object with subformulas.
+         * @param qualitative A flag indicating whether the formula only needs to be evaluated qualitatively, i.e. if the
+         *                    results are only compared against the bounds 0 and 1.
+		 * @return The modelchecking result of the formula for every state.
          */
         virtual std::vector<T> checkInstantaneousReward(const InstantaneousReward<T>& obj, bool qualitative) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract (path) formula tree with a Instantaneous Reward node as root.
+ * Class for an Instantaneous Reward formula.
+ * This class represents a possible leaf in a reward formula tree.
  *
- * The subtrees are seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to NULL before deletion)
+ * Given a path of finite length.
+ * The reward received upon entering the last state of the path is the instantaneous reward of the path.
+ * The instantaneous reward for a state s at time \e bound is the expected instantaneous reward of a path of length \e bound starting in s.
  *
  * @see AbstractPathFormula
  * @see AbstractPrctlFormula
@@ -52,23 +64,18 @@ class InstantaneousReward : public AbstractRewardPathFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor
-	 */
-	InstantaneousReward() : bound(0) {
-		// Intentionally left empty.
-	}
-
-	/*!
-	 * Constructor
+	 * Creates an InstantaneousReward node with the given bound.
+	 *
+	 * If no bound is given it defaults to 0, referencing the state reward received upon entering the state s itself.
 	 *
-	 * @param bound The time instance of the reward formula
+	 * @param bound The time instance of the reward formula.
 	 */
-	InstantaneousReward(uint_fast64_t bound) : bound(bound) {
+	InstantaneousReward(uint_fast64_t bound = 0) : bound(bound) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Empty destructor.
+	 * Empty virtual destructor.
 	 */
 	virtual ~InstantaneousReward() {
 		// Intentionally left empty.
@@ -77,9 +84,9 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new InstantaneousReward-object that is identical the called object.
+	 * @returns A new InstantaneousReward object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractRewardPathFormula<T>> clone() const override {
 		std::shared_ptr<InstantaneousReward<T>> result(new InstantaneousReward(bound));
@@ -101,7 +108,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "I=";
@@ -110,22 +119,26 @@ public:
 	}
 
 	/*!
-	 * @returns the time instance for the instantaneous reward operator
+	 * Gets the time instance for the instantaneous reward operator.
+	 *
+	 * @returns The time instance for the instantaneous reward operator.
 	 */
 	uint_fast64_t getBound() const {
 		return bound;
 	}
 
 	/*!
-	 * Sets the the time instance for the instantaneous reward operator
+	 * Sets the the time instance for the instantaneous reward operator.
 	 *
-	 * @param bound the new bound.
+	 * @param bound The new time instance.
 	 */
 	void setBound(uint_fast64_t bound) {
 		this->bound = bound;
 	}
 
 private:
+
+	// The time instance of the reward formula.
 	uint_fast64_t bound;
 };
 
diff --git a/src/formula/prctl/Next.h b/src/formula/prctl/Next.h
index 052adf9ca..a83ff1690 100644
--- a/src/formula/prctl/Next.h
+++ b/src/formula/prctl/Next.h
@@ -15,37 +15,47 @@ namespace storm {
 namespace property {
 namespace prctl {
 
+// Forward declaration for the interface class.
 template <class T> class Next;
 
 /*!
- *  @brief Interface class for model checkers that support Next.
+ * Interface class for model checkers that support Next.
  *   
- *  All model checkers that support the formula class Next must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class Next must inherit
+ * this pure virtual class.
  */
 template <class T>
 class INextModelChecker {
     public:
+
 		/*!
-         *  @brief Evaluates Next formula within a model checker.
+		 * Empty virtual destructor.
+		 */
+		virtual ~INextModelChecker() {
+			// Intentionally left empty
+		}
+
+		/*!
+         * Evaluates Next formula within a model checker.
          *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
+         * @param obj Formula object with subformulas.
+         * @param qualitative A flag indicating whether the formula only needs to be evaluated qualitatively, i.e. if the
+         *                    results are only compared against the bounds 0 and 1.
+         * @return Result of the formula for every node.
          */
         virtual std::vector<T> checkNext(const Next<T>& obj, bool qualitative) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract (path) formula tree with a Next node as root.
+ * Class for a Prctl (path) formula tree with a Next node as root.
  *
- * Has two Abstract state formulas as sub formulas/trees.
+ * Has two Prctl state formulas as sub formulas/trees.
  *
  * @par Semantics
- * The formula holds iff in the next step, \e child holds
+ * The formula holds iff in the next step, formula \e child holds
  *
- * The subtree is seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to NULL before deletion)
+ * The object has shared ownership of its subtree. If this object is deleted and no other object has a shared
+ * ownership of the subtree it will be deleted as well.
  *
  * @see AbstractPathFormula
  * @see AbstractPrctlFormula
@@ -56,25 +66,24 @@ class Next : public AbstractPathFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor
+	 * Creates a Next node without a subnode.
+	 * The resulting object will not represent a complete formula!
 	 */
 	Next() : child(nullptr){
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor
+	 * Creates a Next node using the given parameter.
 	 *
-	 * @param child The child node
+	 * @param child The child formula subtree.
 	 */
 	Next(std::shared_ptr<AbstractStateFormula<T>> const & child) : child(child){
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor.
-	 *
-	 * Deletes the subtree iff this object is the last remaining owner of the subtree.
+	 * Empty virtual destructor.
 	 */
 	virtual ~Next() {
 		// Intentionally left empty.
@@ -83,13 +92,13 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new BoundedUntil-object that is identical the called object.
+	 * @returns A new Next object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractPathFormula<T>> clone() const override {
 		std::shared_ptr<Next<T>> result(new Next<T>());
-		if (this->childIsSet()) {
+		if (this->isChildSet()) {
 			result->setChild(child->clone());
 		}
 		return result;
@@ -109,7 +118,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "X ";
@@ -118,29 +129,35 @@ public:
 	}
 
 	/*!
-	 * @returns the child node
+	 * Gets the child node.
+	 *
+	 * @returns The child node.
 	 */
 	std::shared_ptr<AbstractStateFormula<T>> const & getChild() const {
 		return child;
 	}
 
 	/*!
-	 * Sets the subtree
-	 * @param child the new child node
+	 * Sets the subtree.
+	 *
+	 * @param child The new child.
 	 */
 	void setChild(std::shared_ptr<AbstractStateFormula<T>> const & child) {
 		this->child = child;
 	}
 
 	/*!
+	 * Checks if the child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the child node is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the child is set.
 	 */
-	bool childIsSet() const {
+	bool isChildSet() const {
 		return child.get() != nullptr;
 	}
 
 private:
+
+	// The child node.
 	std::shared_ptr<AbstractStateFormula<T>> child;
 };
 
diff --git a/src/formula/prctl/Not.h b/src/formula/prctl/Not.h
index a58c5d3f4..83af85e53 100644
--- a/src/formula/prctl/Not.h
+++ b/src/formula/prctl/Not.h
@@ -15,34 +15,42 @@ namespace storm {
 namespace property {
 namespace prctl {
 
+// Forward declaration for the interface class.
 template <class T> class Not;
 
 /*!
- *  @brief Interface class for model checkers that support Not.
+ * Interface class for model checkers that support Not.
  *   
- *  All model checkers that support the formula class Not must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class Not must inherit
+ * this pure virtual class.
  */
 template <class T>
 class INotModelChecker {
     public:
+
 		/*!
-         *  @brief Evaluates Not formula within a model checker.
+		 * Empty virtual destructor.
+		 */
+		virtual ~INotModelChecker() {
+			// Intentionally left empty
+		}
+
+		/*!
+         * Evaluates Not formulas within a model checker.
          *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
+         * @param obj Formula object with subformulas.
+         * @return Result of the formula for every node.
          */
         virtual storm::storage::BitVector checkNot(const Not<T>& obj) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract formula tree with NOT node as root.
+ * Class for an Prctl formula tree with Not node as root.
  *
- * Has one Abstract state formula as sub formula/tree.
+ * Has one state formula as sub formula/tree.
  *
- * The subtree is seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to NULL before deletion)
+ * The object has shared ownership of its subtree. If this object is deleted and no other object has a shared
+ * ownership of the subtree it will be deleted as well.
  *
  * @see AbstractStateFormula
  * @see AbstractPrctlFormula
@@ -53,24 +61,24 @@ class Not : public AbstractStateFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor
+	 * Creates a Not node without a subnode.
+	 * The resulting object will not represent a complete formula!
 	 */
 	Not() : child(nullptr) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor
-	 * @param child The child node
+	 * Creates a Not node using the given parameter.
+	 *
+	 * @param child The child formula subtree.
 	 */
 	Not(std::shared_ptr<AbstractStateFormula<T>> child) : child(child) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Destructor
-	 *
-	 * Deletes the subtree iff this object is the last remaining owner of the subtree.
+	 * Empty virtual destructor.
 	 */
 	virtual ~Not() {
 		// Intentionally left empty.
@@ -79,13 +87,13 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new AND-object that is identical the called object.
+	 * @returns A new Not object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractStateFormula<T>> clone() const override {
 		std::shared_ptr<Not<T>> result(new Not<T>());
-		if (this->childIsSet()) {
+		if (this->isChildSet()) {
 			result->setChild(child->clone());
 		}
 		return result;
@@ -105,7 +113,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "!";
@@ -124,29 +134,35 @@ public:
 	}
 
 	/*!
-	 * @returns The child node
+	 * Gets the child node.
+	 *
+	 * @returns The child node.
 	 */
 	std::shared_ptr<AbstractStateFormula<T>> const & getChild() const {
 		return child;
 	}
 
 	/*!
-	 * Sets the subtree
-	 * @param child the new child node
+	 * Sets the subtree.
+	 *
+	 * @param child The new child.
 	 */
 	void setChild(std::shared_ptr<AbstractStateFormula<T>> const & child) {
 		this->child = child;
 	}
 
 	/*!
+	 * Checks if the child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the child node is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the child is set.
 	 */
-	bool childIsSet() const {
+	bool isChildSet() const {
 		return child.get() != nullptr;
 	}
 
 private:
+
+	// The child node.
 	std::shared_ptr<AbstractStateFormula<T>> child;
 };
 
diff --git a/src/formula/prctl/Or.h b/src/formula/prctl/Or.h
index 646b5735c..3044ce3e7 100644
--- a/src/formula/prctl/Or.h
+++ b/src/formula/prctl/Or.h
@@ -14,37 +14,45 @@ namespace storm {
 namespace property {
 namespace prctl {
 
+// Forward declaration for the interface class.
 template <class T> class Or;
 
 /*!
- *  @brief Interface class for model checkers that support Or.
+ * Interface class for model checkers that support Or.
  *   
- *  All model checkers that support the formula class Or must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class Or must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IOrModelChecker {
 	public:
+
+		/*!
+		 * Empty virtual destructor.
+		 */
+		virtual ~IOrModelChecker() {
+			// Intentionally left empty
+		}
+
 		/*!
-         *  @brief Evaluates Or formula within a model checker.
+         * Evaluates Or formula within a model checker.
          *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
+         * @param obj Formula object with subformulas.
+         * @return Result of the formula for every node.
          */
 		virtual storm::storage::BitVector checkOr(const Or<T>& obj) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract formula tree with OR node as root.
+ * Class for a Prctl formula tree with an Or node as root.
  *
- * Has two Abstract state formulas as sub formulas/trees.
+ * Has two state formulas as sub formulas/trees.
  *
- * As OR is commutative, the order is \e theoretically not important, but will influence the order in which
+ * As Or is commutative, the order is \e theoretically not important, but will influence the order in which
  * the model checker works.
  *
- * The subtrees are seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to NULL before deletion)
+ * The object has shared ownership of its subtrees. If this object is deleted and no other object has a shared
+ * ownership of the subtrees they will be deleted as well.
  *
  * @see AbstractStateFormula
  * @see AbstractPrctlFormula
@@ -55,28 +63,25 @@ class Or : public AbstractStateFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor.
-	 * Will create an OR-node without subnotes. Will not represent a complete formula!
+	 * Creates an Or node without subnodes.
+	 * The resulting object will not represent a complete formula!
 	 */
 	Or() : left(nullptr), right(nullptr) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor.
-	 * Creates an OR note with the parameters as subtrees.
+	 * Creates an Or node with the parameters as subtrees.
 	 *
-	 * @param left The left sub formula
-	 * @param right The right sub formula
+	 * @param left The left sub formula.
+	 * @param right The right sub formula.
 	 */
 	Or(std::shared_ptr<AbstractStateFormula<T>> left, std::shared_ptr<AbstractStateFormula<T>> right) : left(left), right(right) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Destructor.
-	 *
-	 * Deletes the subtree iff this object is the last remaining owner of the subtree.
+	 * Empty virtual destructor.
 	 */
 	virtual ~Or() {
 		// Intentionally left empty.
@@ -85,16 +90,16 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones.
 	 *
-	 * @returns a new AND-object that is identical the called object.
+	 * @returns A new Or object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractStateFormula<T>> clone() const override {
 		std::shared_ptr<Or<T>> result(new Or());
-		if (this->leftIsSet()) {
+		if (this->isLeftSet()) {
 		  result->setLeft(left->clone());
 		}
-		if (this->rightIsSet()) {
+		if (this->isRightSet()) {
 		  result->setRight(right->clone());
 		}
 		return result;
@@ -114,7 +119,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "(";
@@ -136,55 +143,65 @@ public:
 	}
 
 	/*!
-	 * Sets the left child node.
+	 * Gets the left child node.
 	 *
-	 * @param newLeft the new left child.
+	 * @returns The left child node.
 	 */
-	void setLeft(std::shared_ptr<AbstractStateFormula<T>> const & newLeft) {
-		left = newLeft;
+	std::shared_ptr<AbstractStateFormula<T>> const & getLeft() const {
+		return left;
 	}
 
 	/*!
-	 * Sets the right child node.
+	 * Gets the right child node.
 	 *
-	 * @param newRight the new right child.
+	 * @returns The right child node.
 	 */
-	void setRight(std::shared_ptr<AbstractStateFormula<T>> const & newRight) {
-		right = newRight;
+	std::shared_ptr<AbstractStateFormula<T>> const & getRight() const {
+		return right;
 	}
 
 	/*!
-	 * @returns a pointer to the left child node
+	 * Sets the left child node.
+	 *
+	 * @param newLeft The new left child.
 	 */
-	std::shared_ptr<AbstractStateFormula<T>> const & getLeft() const {
-		return left;
+	void setLeft(std::shared_ptr<AbstractStateFormula<T>> const & newLeft) {
+		left = newLeft;
 	}
 
 	/*!
-	 * @returns a pointer to the right child node
+	 * Sets the right child node.
+	 *
+	 * @param newRight The new right child.
 	 */
-	std::shared_ptr<AbstractStateFormula<T>> const & getRight() const {
-		return right;
+	void setRight(std::shared_ptr<AbstractStateFormula<T>> const & newRight) {
+		right = newRight;
 	}
 
 	/*!
+	 * Checks if the left child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the left child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the left child is set.
 	 */
-	bool leftIsSet() const {
+	bool isLeftSet() const {
 		return left.get() != nullptr;
 	}
 
 	/*!
+	 * Checks if the right child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the right child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the left right is set.
 	 */
-	bool rightIsSet() const {
+	bool isRightSet() const {
 		return right.get() != nullptr;
 	}
 
 private:
+
+	// The left child node.
 	std::shared_ptr<AbstractStateFormula<T>> left;
+
+	// The right child node.
 	std::shared_ptr<AbstractStateFormula<T>> right;
 
 };
diff --git a/src/formula/prctl/PrctlFilter.h b/src/formula/prctl/PrctlFilter.h
index 6341764f9..02ffa5c5a 100644
--- a/src/formula/prctl/PrctlFilter.h
+++ b/src/formula/prctl/PrctlFilter.h
@@ -15,15 +15,6 @@
 #include "src/modelchecker/prctl/AbstractModelChecker.h"
 #include "src/formula/actions/AbstractAction.h"
 
-// TODO: Test if this can be can be ommitted.
-namespace storm {
-namespace property {
-namespace action {
- template <typename T> class AbstractAction;
-}
-}
-}
-
 #include <algorithm>
 #include <memory>
 
@@ -31,33 +22,81 @@ namespace storm {
 namespace property {
 namespace prctl {
 
+/*!
+ * This is the Prctl specific filter.
+ *
+ * It maintains a Prctl formula which can be checked against a given model by either calling evaluate() or check().
+ * Additionally it maintains a list of filter actions that are used to further manipulate the modelchecking results and prepare them for output.
+ */
 template <class T>
 class PrctlFilter : public storm::property::AbstractFilter<T> {
 
+	// Convenience typedef to make the code more readable.
 	typedef typename storm::property::action::AbstractAction<T>::Result Result;
 
 public:
 
+	/*!
+	 * Creates an empty PrctlFilter, maintaining no Prctl formula.
+	 *
+	 * Calling check or evaluate will return an empty result.
+	 */
 	PrctlFilter() : AbstractFilter<T>(UNDEFINED), child(nullptr) {
 		// Intentionally left empty.
 	}
 
+	/*!
+	 * Creates a PrctlFilter maintaining a Prctl formula but containing no actions.
+	 *
+	 * The modelchecking result will be returned or printed as is.
+	 *
+	 * @param child The Prctl formula to be maintained.
+	 * @param opt An enum value indicating which kind of scheduler shall be used for path formulas on nondeterministic models.
+	 */
 	PrctlFilter(std::shared_ptr<AbstractPrctlFormula<T>> const & child, OptimizingOperator opt = UNDEFINED) : AbstractFilter<T>(opt), child(child) {
 		// Intentionally left empty.
 	}
 
+	/*!
+	 * Creates a PrctlFilter maintaining a Prctl formula and containing a single action.
+	 *
+	 * The given action will be applied to the modelchecking result during evaluation.
+	 * Further actions can be added later.
+	 *
+	 * @param child The Prctl formula to be maintained.
+	 * @param action The single action to be executed during evaluation.
+	 * @param opt An enum value indicating which kind of scheduler shall be used for path formulas on nondeterministic models.
+	 */
 	PrctlFilter(std::shared_ptr<AbstractPrctlFormula<T>> const & child, std::shared_ptr<action::AbstractAction<T>> const & action, OptimizingOperator opt = UNDEFINED) : AbstractFilter<T>(action, opt), child(child) {
 		// Intentionally left empty.
 	}
 
+	/*!
+	 * Creates a PrctlFilter using the given parameters.
+	 *
+	 * The given actions will be applied to the modelchecking result in ascending index order during evaluation.
+	 * Further actions can be added later.
+	 *
+	 * @param child The Prctl formula to be maintained.
+	 * @param actions A vector conatining the actions that are to be executed during evaluation.
+	 * @param opt An enum value indicating which kind of scheduler shall be used for path formulas on nondeterministic models.
+	 */
 	PrctlFilter(std::shared_ptr<AbstractPrctlFormula<T>> const & child, std::vector<std::shared_ptr<action::AbstractAction<T>>> const & actions, OptimizingOperator opt = UNDEFINED) : AbstractFilter<T>(actions, opt), child(child) {
 		// Intentionally left empty.
 	}
 
+	/*!
+	 * Empty virtual destructor.
+	 */
 	virtual ~PrctlFilter() {
 		// Intentionally left empty.
 	}
 
+	/*!
+	 * Calls the modelchecker, retrieves the modelchecking result, applies the filter action one by one and prints out the result.
+	 *
+	 * @param modelchecker The modelchecker to be called.
+	 */
 	void check(storm::modelchecker::prctl::AbstractModelChecker<T> const & modelchecker) const {
 
 		// Write out the formula to be checked.
@@ -68,6 +107,12 @@ public:
 		writeOut(evaluate(modelchecker), modelchecker);
 	}
 
+	/*!
+	 * Calls the modelchecker, retrieves the modelchecking result, applies the filter action one by one and returns the result.
+	 *
+	 * @param modelchecker The modelchecker to be called.
+	 * @returns The result of the sequential application of the filter actions to the modelchecking result.
+	 */
 	Result evaluate(storm::modelchecker::prctl::AbstractModelChecker<T> const & modelchecker) const {
 
 		Result result;
@@ -88,6 +133,13 @@ public:
 		return result;
 	}
 
+	/*!
+	 * Returns a textual representation of the filter.
+	 *
+	 * That includes the actions as well as the maintained formula.
+	 *
+	 * @returns A string representing the filter.
+	 */
 	virtual std::string toString() const override {
 		std::string desc = "";
 
@@ -175,26 +227,44 @@ public:
 		return desc;
 	}
 
-	virtual std::string toPrettyString() const override {
-		std::string desc = "Filter: ";
-		desc += "\nActions:";
-		for(auto action : this->actions) {
-			desc += "\n\t" + action->toString();
-		}
-		desc += "\nFormula:\n\t" + child->toString();
-		return desc;
+	/*!
+	 * Gets the child node.
+	 *
+	 * @returns The child node.
+	 */
+	std::shared_ptr<AbstractPrctlFormula<T>> const & getChild() const {
+		return child;
 	}
 
+	/*!
+	 * Sets the subtree.
+	 *
+	 * @param child The new child.
+	 */
 	void setChild(std::shared_ptr<AbstractPrctlFormula<T>> const & child) {
 		this->child = child;
 	}
 
-	std::shared_ptr<AbstractPrctlFormula<T>> const & getChild() const {
-		return child;
+	/*!
+	 * Checks if the child is set, i.e. it does not point to null.
+	 *
+	 * @return True iff the child is set.
+	 */
+	bool isChildSet() const {
+		return child.get() != nullptr;
 	}
 
 private:
 
+	/*!
+	 * Calls the modelchecker for a state formula, retrieves the modelchecking result, applies the filter action one by one and returns the result.
+	 *
+	 * This an internal version of the evaluate method overloading it for the different Prctl formula types.
+	 *
+	 * @param modelchecker The modelchecker to be called.
+	 * @param formula The state formula for which the modelchecker will be called.
+	 * @returns The result of the sequential application of the filter actions to the modelchecking result.
+	 */
 	Result evaluate(storm::modelchecker::prctl::AbstractModelChecker<T> const & modelchecker, std::shared_ptr<AbstractStateFormula<T>> const & formula) const {
 		// First, get the model checking result.
 		Result result;
@@ -210,6 +280,15 @@ private:
 		return evaluateActions(result, modelchecker);
 	}
 
+	/*!
+	 * Calls the modelchecker for a path formula, retrieves the modelchecking result, applies the filter action one by one and returns the result.
+	 *
+	 * This an internal version of the evaluate method overloading it for the different Prctl formula types.
+	 *
+	 * @param modelchecker The modelchecker to be called.
+	 * @param formula The path formula for which the modelchecker will be called.
+	 * @returns The result of the sequential application of the filter actions to the modelchecking result.
+	 */
 	Result evaluate(storm::modelchecker::prctl::AbstractModelChecker<T> const & modelchecker, std::shared_ptr<AbstractPathFormula<T>> const & formula) const {
 		// First, get the model checking result.
 		Result result;
@@ -225,6 +304,15 @@ private:
 		return evaluateActions(result, modelchecker);
 	}
 
+	/*!
+	 * Calls the modelchecker for a reward formula, retrieves the modelchecking result, applies the filter action one by one and returns the result.
+	 *
+	 * This an internal version of the evaluate method overloading it for the different Prctl formula types.
+	 *
+	 * @param modelchecker The modelchecker to be called.
+	 * @param formula The reward formula for which the modelchecker will be called.
+	 * @returns The result of the sequential application of the filter actions to the modelchecking result.
+	 */
 	Result evaluate(storm::modelchecker::prctl::AbstractModelChecker<T> const & modelchecker, std::shared_ptr<AbstractRewardPathFormula<T>> const & formula) const {
 		// First, get the model checking result.
 		Result result;
@@ -240,6 +328,13 @@ private:
 		return evaluateActions(result, modelchecker);
 	}
 
+	/*!
+	 * Evaluates the filter actions by calling them one by one using the output of each action as the input for the next one.
+	 *
+	 * @param input The modelchecking result in form of a Result struct.
+	 * @param modelchecker The modelchecker that was called to generate the modelchecking result. Needed by some actions.
+	 * @returns The result of the sequential application of the filter actions to the modelchecking result.
+	 */
 	Result evaluateActions(Result const & input, storm::modelchecker::prctl::AbstractModelChecker<T> const & modelchecker) const {
 
 		// Init the state selection and state map vectors.
@@ -258,7 +353,12 @@ private:
 		return result;
 	}
 
-
+	/*!
+	 * Writes out the given result.
+	 *
+	 * @param result The result of the sequential application of the filter actions to a modelchecking result.
+	 * @param modelchecker The modelchecker that was called to generate the modelchecking result. Needed for legacy support.
+	 */
 	void writeOut(Result const & result, storm::modelchecker::prctl::AbstractModelChecker<T> const & modelchecker) const {
 
 		// Test if there is anything to write out.
@@ -323,6 +423,7 @@ private:
 		std::cout << std::endl << "-------------------------------------------" << std::endl;
 	}
 
+	// The Prctl formula maintained by this filter.
 	std::shared_ptr<AbstractPrctlFormula<T>> child;
 };
 
diff --git a/src/formula/prctl/ProbabilisticBoundOperator.h b/src/formula/prctl/ProbabilisticBoundOperator.h
index 6905d9069..abaf1e1db 100644
--- a/src/formula/prctl/ProbabilisticBoundOperator.h
+++ b/src/formula/prctl/ProbabilisticBoundOperator.h
@@ -17,40 +17,51 @@ namespace storm {
 namespace property {
 namespace prctl {
 
+// Forward declaration for the interface class.
 template <class T> class ProbabilisticBoundOperator;
 
 /*!
- *  @brief Interface class for model checkers that support ProbabilisticBoundOperator.
+ * Interface class for model checkers that support ProbabilisticBoundOperator.
  *
- *  All model checkers that support the formula class PathBoundOperator must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class PathBoundOperator must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IProbabilisticBoundOperatorModelChecker {
     public:
+
+		/*!
+		 * Empty virtual destructor.
+		 */
+		virtual ~IProbabilisticBoundOperatorModelChecker() {
+			// Intentionally left empty
+		}
+
+		/*!
+		 * Evaluates a ProbabilisticBoundOperator within a model checker.
+		 *
+		 * @param obj Formula object with subformulas.
+		 * @return The modelchecking result of the formula for every state.
+		 */
         virtual storm::storage::BitVector checkProbabilisticBoundOperator(const ProbabilisticBoundOperator<T>& obj) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract formula tree with a P (probablistic) operator node over a probability interval
- * as root.
+ * Class for a Prctl formula tree with a P (probablistic) bound operator node as root.
  *
- * Has one Abstract path formula as sub formula/tree.
+ * Has one path formula as sub formula/tree.
  *
  * @par Semantics
- * 	  The formula holds iff the probability that the path formula holds is inside the bounds
- * 	  specified in this operator
- *
- * The subtree is seen as part of the object and deleted with it
- * (this behavior can be prevented by setting them to NULL before deletion)
+ * 	  The formula holds iff the probability that the path formula holds meets the bound
+ * 	  specified in this operator.
  *
+ * The object has shared ownership of its subtree. If this object is deleted and no other object has a shared
+ * ownership of the subtree it will be deleted as well.
  *
  * @see AbstractStateFormula
  * @see AbstractPathFormula
- * @see ProbabilisticOperator
- * @see ProbabilisticNoBoundsOperator
  * @see AbstractPrctlFormula
+ * @see RewardBoundOperator
  */
 template<class T>
 class ProbabilisticBoundOperator : public AbstractStateFormula<T> {
@@ -58,18 +69,19 @@ class ProbabilisticBoundOperator : public AbstractStateFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor
+	 * Creates a ProbabilisticBoundOperator node without a subnode.
+	 * The resulting object will not represent a complete formula!
 	 */
 	ProbabilisticBoundOperator() : comparisonOperator(LESS), bound(0), child(nullptr) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor for non-optimizing operator.
+	 * Creates a ProbabilisticBoundOperator node using the given parameters.
 	 *
 	 * @param comparisonOperator The relation for the bound.
-	 * @param bound The bound for the probability
-	 * @param child The child node
+	 * @param bound The bound for the probability.
+	 * @param child The child formula subtree.
 	 */
 	ProbabilisticBoundOperator(storm::property::ComparisonType comparisonOperator, T bound, std::shared_ptr<AbstractPathFormula<T>> const & child)
 		: comparisonOperator(comparisonOperator), bound(bound), child(child) {
@@ -77,9 +89,7 @@ public:
 	}
 
 	/*!
-	 * Destructor
-	 *
-	 * Deletes the subtree iff this object is the last remaining owner of the subtree.
+	 * Empty virtual destructor.
 	 */
 	virtual ~ProbabilisticBoundOperator() {
 		// Intentionally left empty.
@@ -88,9 +98,9 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new AND-object that is identical the called object.
+	 * @returns A new ProbabilisticBoundOperator object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractStateFormula<T>> clone() const override {
 		std::shared_ptr<ProbabilisticBoundOperator<T>> result(new ProbabilisticBoundOperator<T>());
@@ -114,7 +124,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "P ";
@@ -133,56 +145,74 @@ public:
 	}
 
 	/*!
-	 * @returns the child node (representation of a formula)
+	 * Gets the child node.
+	 *
+	 * @returns The child node.
 	 */
 	std::shared_ptr<AbstractPathFormula<T>> const & getChild () const {
 		return child;
 	}
 
 	/*!
-	 * Sets the child node
+	 * Sets the subtree.
 	 *
-	 * @param child the path formula that becomes the new child node
+	 * @param child The new child.
 	 */
 	void setChild(std::shared_ptr<AbstractPathFormula<T>> const & child) {
 		this->child = child;
 	}
 
 	/*!
+	 * Checks if the child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the path formula is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the child is set.
 	 */
-	bool childIsSet() const {
+	bool isChildSet() const {
 		return child.get() != nullptr;
 	}
 
 	/*!
-	 * @returns the comparison relation
+	 * Gets the comparison operator.
+	 *
+	 * @returns An enum value representing the comparison relation.
 	 */
 	storm::property::ComparisonType const getComparisonOperator() const {
 		return comparisonOperator;
 	}
 
+	/*!
+	 * Sets the comparison operator.
+	 *
+	 * @param comparisonOperator An enum value representing the new comparison relation.
+	 */
 	void setComparisonOperator(storm::property::ComparisonType comparisonOperator) {
 		this->comparisonOperator = comparisonOperator;
 	}
 
 	/*!
-	 * @returns the bound for the measure
+	 * Gets the bound which the probability that the path formula holds has to obey.
+	 *
+	 * @returns The probability bound.
 	 */
 	T const & getBound() const {
 		return bound;
 	}
 
 	/*!
-	 * Sets the interval in which the probability that the path formula holds may lie in.
+	 * Sets the bound which the probability that the path formula holds has to obey.
 	 *
-	 * @param bound The bound for the measure
+	 * @param bound The new probability bound.
 	 */
 	void setBound(T bound) {
 		this->bound = bound;
 	}
 
+	/*!
+	 * Checks if the bound is met by the given value.
+	 *
+	 * @param value The value to test against the bound.
+	 * @returns True iff value <comparisonOperator> bound holds.
+	 */
 	bool meetsBound(T value) const {
 		switch (comparisonOperator) {
 		case LESS: return value < bound; break;
@@ -194,8 +224,14 @@ public:
 	}
 
 private:
+
+	// The operator used to indicate the kind of bound that is to be met.
 	storm::property::ComparisonType comparisonOperator;
+
+	// The probability bound.
 	T bound;
+
+	// The path formula for which the probability to be satisfied has to meet the bound.
 	std::shared_ptr<AbstractPathFormula<T>> child;
 };
 
diff --git a/src/formula/prctl/ReachabilityReward.h b/src/formula/prctl/ReachabilityReward.h
index 0fe5f5792..2187b6250 100644
--- a/src/formula/prctl/ReachabilityReward.h
+++ b/src/formula/prctl/ReachabilityReward.h
@@ -15,62 +15,77 @@ namespace storm {
 namespace property {
 namespace prctl {
 
+// Forward declaration for the interface class.
 template <class T> class ReachabilityReward;
 
 /*!
- *  @brief Interface class for model checkers that support ReachabilityReward.
+ * Interface class for model checkers that support ReachabilityReward.
  *   
- *  All model checkers that support the formula class ReachabilityReward must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class ReachabilityReward must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IReachabilityRewardModelChecker {
     public:
+
+		/*!
+		 * Empty virtual destructor.
+		 */
+		virtual ~IReachabilityRewardModelChecker() {
+			// Intentionally left empty
+		}
+
 		/*!
-         *  @brief Evaluates ReachabilityReward formula within a model checker.  
-         *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
-         */
+		 * Evaluates a ReachabilityReward formula within a model checker.
+		 *
+		 * @param obj Formula object with subformulas.
+		 * @param qualitative A flag indicating whether the formula only needs to be evaluated qualitatively, i.e. if the
+         *                    results are only compared against the bounds 0 and 1.
+		 * @return The modelchecking result of the formula for every state.
+		 */
         virtual std::vector<T> checkReachabilityReward(const ReachabilityReward<T>& obj, bool qualitative) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract (path) formula tree with an Reachability Reward node as root.
+ * Class for an Prctl (reward path) formula tree with an Reachability Reward node as root.
+ *
+ * Has one state formula as sub formula/tree.
  *
- * Has one Abstract state formula as sub formula/tree.
+ * This formula expresses the rewards received or costs needed to reach a state satisfying the formula \e child.
+ * In case the state under consiteration itself satisfies the formula \e child the rewards are zero.
+ * In case that there is a non zero probability of not reaching any of the target states the rewards are infinite.
+ * Also note that for this formula both state and transition rewards are considered and use if available in the model.
  *
- * The subtree is seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to nullptr before deletion)
+ * The object has shared ownership of its subtree. If this object is deleted and no other object has a shared
+ * ownership of the subtree it will be deleted as well.
  *
- * @see AbstractPathFormula
+ * @see AbstractRewardPathFormula
  * @see AbstractPrctlFormula
  */
 template <class T>
 class ReachabilityReward : public AbstractRewardPathFormula<T> {
 
 public:
+
 	/*!
-	 * Empty constructor
+	 * Creates a ReachabilityReward node without a subnode.
+	 * The resulting object will not represent a complete formula!
 	 */
 	ReachabilityReward() : child(nullptr){
 		// Intentionally left empty
 	}
 
 	/*!
-	 * Constructor
+	 * Creates an Eventually node using the given parameter.
 	 *
-	 * @param child The child node
+	 * @param child The child formula subtree.
 	 */
 	ReachabilityReward(std::shared_ptr<AbstractStateFormula<T>> child) : child(child){
 		// Intentionally left empty
 	}
 
 	/*!
-	 * Destructor.
-	 *
-	 * Deletes the subtree iff this object is the last remaining owner of the subtree.
+	 * Empty virtual destructor.
 	 */
 	virtual ~ReachabilityReward() {
 		// Intentionally left empty.
@@ -79,13 +94,13 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new ReachabilityReward-object that is identical the called object.
+	 * @returns A new ReachabilityReward object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractRewardPathFormula<T>> clone() const override {
 		std::shared_ptr<ReachabilityReward<T>> result(new ReachabilityReward<T>());
-		if (this->childIsSet()) {
+		if (this->isChildSet()) {
 			result->setChild(child->clone());
 		}
 		return result;
@@ -105,7 +120,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "F ";
@@ -114,29 +131,35 @@ public:
 	}
 
 	/*!
-	 * @returns the child node
+	 * Gets the child node.
+	 *
+	 * @returns The child node.
 	 */
 	std::shared_ptr<AbstractStateFormula<T>> const & getChild() const {
 		return child;
 	}
 
 	/*!
-	 * Sets the subtree
-	 * @param child the new child node
+	 * Sets the subtree.
+	 *
+	 * @param child The new child.
 	 */
 	void setChild(std::shared_ptr<AbstractStateFormula<T>> const & child) {
 		this->child = child;
 	}
 
 	/*!
+	 * Checks if the child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the child node is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the child is set.
 	 */
-	bool childIsSet() const {
+	bool isChildSet() const {
 		return child.get() != nullptr;
 	}
 
 private:
+
+	// The child node.
 	std::shared_ptr<AbstractStateFormula<T>> child;
 };
 
diff --git a/src/formula/prctl/RewardBoundOperator.h b/src/formula/prctl/RewardBoundOperator.h
index 12900c58c..a7a4089a9 100644
--- a/src/formula/prctl/RewardBoundOperator.h
+++ b/src/formula/prctl/RewardBoundOperator.h
@@ -17,57 +17,72 @@ namespace storm {
 namespace property {
 namespace prctl {
 
+// Forward declaration for the interface class.
 template <class T> class RewardBoundOperator;
 
 /*!
- *  @brief Interface class for model checkers that support RewardBoundOperator.
+ * Interface class for model checkers that support RewardBoundOperator.
  *
- *  All model checkers that support the formula class PathBoundOperator must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class PathBoundOperator must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IRewardBoundOperatorModelChecker {
     public:
+
+		/*!
+		 * Empty virtual destructor.
+		 */
+		virtual ~IRewardBoundOperatorModelChecker() {
+			// Intentionally left empty
+		}
+
+		/*!
+		 * Evaluates a RewardBoundOperator within a model checker.
+		 *
+		 * @param obj Formula object with subformulas.
+		 * @return The modelchecking result of the formula for every state.
+		 */
         virtual storm::storage::BitVector checkRewardBoundOperator(const RewardBoundOperator<T>& obj) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract formula tree with a R (reward) operator node over a reward interval as root.
+ * Class for a Prctl formula tree with an R (reward) operator node as root.
  *
  * Has a reward path formula as sub formula/tree.
  *
  * @par Semantics
- * 	  The formula holds iff the reward of the reward path formula is inside the bounds
- * 	  specified in this operator
+ * 	  The formula holds iff the reward of the reward path formula meets the bound
+ * 	  specified in this operator.
  *
- * The subtree is seen as part of the object and deleted with it
- * (this behavior can be prevented by setting them to NULL before deletion)
+ * The object has shared ownership of its subtree. If this object is deleted and no other object has a shared
+ * ownership of the subtree it will be deleted as well.
  *
  *
  * @see AbstractStateFormula
- * @see AbstractPathFormula
- * @see ProbabilisticOperator
- * @see ProbabilisticNoBoundsOperator
+ * @see AbstractRewardPathFormula
  * @see AbstractPrctlFormula
+ * @see ProbabilisticBoundOperator
  */
 template<class T>
 class RewardBoundOperator : public AbstractStateFormula<T> {
 
 public:
+
 	/*!
-	 * Empty constructor
+	 * Creates a RewardBoundOperator node without a subnode.
+	 * The resulting object will not represent a complete formula!
 	 */
 	RewardBoundOperator() : comparisonOperator(LESS), bound(0), child(nullptr){
 		// Intentionally left empty
 	}
 
 	/*!
-	 * Constructor for non-optimizing operator.
+	 * Creates a ProbabilisticBoundOperator node using the given parameters.
 	 *
 	 * @param comparisonOperator The relation for the bound.
-	 * @param bound The bound for the probability
-	 * @param child The child node
+	 * @param bound The bound for the rewards.
+	 * @param child The child formula subtree.
 	 */
 	RewardBoundOperator(storm::property::ComparisonType comparisonOperator, T bound, std::shared_ptr<AbstractRewardPathFormula<T>> const & child)
 		: comparisonOperator(comparisonOperator), bound(bound), child(child) {
@@ -75,9 +90,7 @@ public:
 	}
 
 	/*!
-	 * Destructor
-	 *
-	 * Deletes the subtree iff this object is the last remaining owner of the subtree.
+	 * Empty virtual destructor.
 	 */
 	virtual ~RewardBoundOperator() {
 		// Intentionally left empty.
@@ -86,9 +99,9 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new AND-object that is identical the called object.
+	 * @returns A new RewardBoundOperator object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractStateFormula<T>> clone() const override {
 		std::shared_ptr<RewardBoundOperator<T>> result(new RewardBoundOperator<T>());
@@ -112,7 +125,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = "R ";
@@ -131,56 +146,74 @@ public:
 	}
 
 	/*!
-	 * @returns the child node (representation of a formula)
+	 * Gets the child node.
+	 *
+	 * @returns The child node.
 	 */
 	std::shared_ptr<AbstractRewardPathFormula<T>> const & getChild () const {
 		return child;
 	}
 
 	/*!
-	 * Sets the child node
+	 * Sets the subtree.
 	 *
-	 * @param child the path formula that becomes the new child node
+	 * @param child The new child.
 	 */
 	void setChild(std::shared_ptr<AbstractRewardPathFormula<T>> const & child) {
 		this->child = child;
 	}
 
 	/*!
+	 * Checks if the child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the path formula is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the child is set.
 	 */
-	bool childIsSet() const {
+	bool isChildSet() const {
 		return child.get() != nullptr;
 	}
 
 	/*!
-	 * @returns the comparison relation
+	 * Gets the comparison operator.
+	 *
+	 * @returns An enum value representing the comparison relation.
 	 */
 	storm::property::ComparisonType const getComparisonOperator() const {
 		return comparisonOperator;
 	}
 
+	/*!
+	 * Sets the comparison operator.
+	 *
+	 * @param comparisonOperator An enum value representing the new comparison relation.
+	 */
 	void setComparisonOperator(storm::property::ComparisonType comparisonOperator) {
 		this->comparisonOperator = comparisonOperator;
 	}
 
 	/*!
-	 * @returns the bound for the measure
+	 * Gets the bound which is to be obeyed by the rewards of the reward path formula.
+	 *
+	 * @returns The probability bound.
 	 */
 	T const & getBound() const {
 		return bound;
 	}
 
 	/*!
-	 * Sets the interval in which the probability that the path formula holds may lie in.
+	 * Sets the bound which is to be obeyed by the rewards of the reward path formula
 	 *
-	 * @param bound The bound for the measure
+	 * @param bound The new reward bound.
 	 */
 	void setBound(T bound) {
 		this->bound = bound;
 	}
 
+	/*!
+	 * Checks if the bound is met by the given value.
+	 *
+	 * @param value The value to test against the bound.
+	 * @returns True iff value <comparisonOperator> bound holds.
+	 */
 	bool meetsBound(T value) const {
 		switch (comparisonOperator) {
 			case LESS: return value < bound; break;
@@ -192,8 +225,14 @@ public:
 	}
 
 private:
+
+	// The operator used to indicate the kind of bound that is to be met.
 	storm::property::ComparisonType comparisonOperator;
+
+	// The reward bound.
 	T bound;
+
+	// The reward path formula whose rewards have to meet the bound.
 	std::shared_ptr<AbstractRewardPathFormula<T>> child;
 };
 
diff --git a/src/formula/prctl/SteadyStateReward.h b/src/formula/prctl/SteadyStateReward.h
index 84774998f..c075abba9 100644
--- a/src/formula/prctl/SteadyStateReward.h
+++ b/src/formula/prctl/SteadyStateReward.h
@@ -15,43 +15,60 @@ namespace storm {
 namespace property {
 namespace prctl {
 
+// Forward declaration for the interface class.
 template <class T> class SteadyStateReward;
 
 /*!
- *  @brief Interface class for model checkers that support SteadyStateReward.
+ * Interface class for model checkers that support SteadyStateReward.
  *
- *  All model checkers that support the formula class SteadyStateReward must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class SteadyStateReward must inherit
+ * this pure virtual class.
  */
 template <class T>
 class ISteadyStateRewardModelChecker {
     public:
+
+		/*!
+		 * Empty virtual destructor.
+		 */
+		virtual ~ISteadyStateRewardModelChecker() {
+			// Intentionally left empty
+		}
+
 		/*!
-         *  @brief Evaluates CumulativeReward formula within a model checker.
-         *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
-         */
+		 * Evaluates a SteadyStateReward formula within a model checker.
+		 *
+		 * @param obj Formula object with subformulas.
+		 * @param qualitative A flag indicating whether the formula only needs to be evaluated qualitatively, i.e. if the
+         *                    results are only compared against the bounds 0 and 1.
+		 * @return The modelchecking result of the formula for every state.
+		 */
         virtual std::vector<T> checkSteadyStateReward(const SteadyStateReward<T>& obj, bool qualitative) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract (path) formula tree with a Steady State Reward node as root.
+ * Class for a Steady State Reward formula.
+ * This class represents a possible leaf in a reward formula tree.
+ *
+ * This formula expresses the expected long-run rewards for each state in the model.
  *
- * @see AbstractPathFormula
+ * @see AbstractRewardPathFormula
  * @see AbstractPrctlFormula
  */
 template <class T>
 class SteadyStateReward: public AbstractRewardPathFormula<T> {
 public:
+
 	/*!
-	 * Empty constructor
+	 * Creates a new SteadyStateReward node.
 	 */
 	SteadyStateReward() {
 		// Intentionally left empty.
 	}
 
+	/*!
+	 * Empty virtual destructor.
+	 */
 	virtual ~SteadyStateReward() {
 		// Intentionally left empty.
 	}
@@ -59,12 +76,12 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new SteadyState-object that is identical the called object.
+	 * @returns A new SteadyStateReward object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractRewardPathFormula<T>> clone() const override {
-		std::shared_ptr<SteadyStateReward<T>> result(new SteadyStateReward<T>());
+		auto result = std::make_shared<SteadyStateReward<T>>();
 		return result;
 	}
 
@@ -82,7 +99,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		return "S";
diff --git a/src/formula/prctl/Until.h b/src/formula/prctl/Until.h
index eb939b54f..27eb89167 100644
--- a/src/formula/prctl/Until.h
+++ b/src/formula/prctl/Until.h
@@ -15,41 +15,52 @@ namespace storm {
 namespace property {
 namespace prctl {
 
+// Forward declaration for the interface class.
 template <class T> class Until;
 
 /*!
- *  @brief Interface class for model checkers that support Until.
+ * Interface class for model checkers that support Until.
  *
- *  All model checkers that support the formula class Until must inherit
- *  this pure virtual class.
+ * All model checkers that support the formula class Until must inherit
+ * this pure virtual class.
  */
 template <class T>
 class IUntilModelChecker {
     public:
+
+		/*!
+		 * Empty virtual destructor.
+		 */
+		virtual ~IUntilModelChecker() {
+			// Intentionally left empty
+		}
+
 		/*!
-         *  @brief Evaluates Until formula within a model checker.
-         *
-         *  @param obj Formula object with subformulas.
-         *  @return Result of the formula for every node.
-         */
+		 * Evaluates an Until formula within a model checker.
+		 *
+		 * @param obj Formula object with subformulas.
+		 * @param qualitative A flag indicating whether the formula only needs to be evaluated qualitatively, i.e. if the
+         *                    results are only compared against the bounds 0 and 1.
+		 * @return The modelchecking result of the formula for every state.
+		 */
         virtual std::vector<T> checkUntil(const Until<T>& obj, bool qualitative) const = 0;
 };
 
 /*!
- * @brief
- * Class for an abstract (path) formula tree with an Until node as root.
+ * Class for a Prctl (path) formula tree with an Until node as root.
  *
- * Has two Abstract state formulas as sub formulas/trees.
+ * Has two state formulas as sub formulas/trees.
  *
  * @par Semantics
  * The formula holds iff eventually, formula \e right (the right subtree) holds, and before,
  * \e left holds always.
  *
- * The subtrees are seen as part of the object and deleted with the object
- * (this behavior can be prevented by setting them to NULL before deletion)
+ * The object has shared ownership of its subtrees. If this object is deleted and no other object has a shared
+ * ownership of the subtrees they will be deleted as well.
  *
  * @see AbstractPathFormula
  * @see AbstractPrctlFormula
+ * @see BoundedUntil
  */
 template <class T>
 class Until : public AbstractPathFormula<T> {
@@ -57,26 +68,25 @@ class Until : public AbstractPathFormula<T> {
 public:
 
 	/*!
-	 * Empty constructor
+	 * Creates an Until node without subnodes.
+	 * The resulting object will not represent a complete formula!
 	 */
-	Until() : left(nullptr), right(nullptr){
+	Until() : left(nullptr), right(nullptr) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Constructor
+	 * Creates an Until node using the given parameters.
 	 *
-	 * @param left The left formula subtree
-	 * @param right The left formula subtree
+	 * @param left The left formula subtree.
+	 * @param right The right formula subtree.
 	 */
-	Until(std::shared_ptr<AbstractStateFormula<T>> const & left, std::shared_ptr<AbstractStateFormula<T>> const & right) : left(left), right(right){
+	Until(std::shared_ptr<AbstractStateFormula<T>> const & left, std::shared_ptr<AbstractStateFormula<T>> const & right) : left(left), right(right) {
 		// Intentionally left empty.
 	}
 
 	/*!
-	 * Destructor.
-	 *
-	 * Deletes the subtrees iff this object is the last remaining owner of the subtree to be deleted.
+	 * Empty virtual destructor.
 	 */
 	virtual ~Until() {
 		// Intentionally left empty.
@@ -85,16 +95,16 @@ public:
 	/*!
 	 * Clones the called object.
 	 *
-	 * Performs a "deep copy", i.e. the subtrees of the new object are clones of the original ones
+	 * Performs a "deep copy", i.e. the subnodes of the new object are clones of the original ones.
 	 *
-	 * @returns a new BoundedUntil-object that is identical the called object.
+	 * @returns A new Until object that is a deep copy of the called object.
 	 */
 	virtual std::shared_ptr<AbstractPathFormula<T>> clone() const override {
 		std::shared_ptr<Until<T>> result(new Until());
-		if (this->leftIsSet()) {
+		if (this->isLeftSet()) {
 		  result->setLeft(left->clone());
 		}
-		if (this->rightIsSet()) {
+		if (this->isRightSet()) {
 		  result->setRight(right->clone());
 		}
 		return result;
@@ -114,7 +124,9 @@ public:
 	}
 
 	/*!
-	 * @returns a string representation of the formula
+	 * Returns a textual representation of the formula tree with this node as root.
+	 *
+	 * @returns A string representing the formula tree.
 	 */
 	virtual std::string toString() const override {
 		std::string result = left->toString();
@@ -124,55 +136,65 @@ public:
 	}
 
 	/*!
-	 * Sets the left child node.
+	 * Gets the left child node.
 	 *
-	 * @param newLeft the new left child.
+	 * @returns The left child node.
 	 */
-	void setLeft(std::shared_ptr<AbstractStateFormula<T>> const & newLeft) {
-		left = newLeft;
+	std::shared_ptr<AbstractStateFormula<T>> const & getLeft() const {
+		return left;
 	}
 
 	/*!
-	 * Sets the right child node.
+	 * Gets the right child node.
 	 *
-	 * @param newRight the new right child.
+	 * @returns The right child node.
 	 */
-	void setRight(std::shared_ptr<AbstractStateFormula<T>> const & newRight) {
-		right = newRight;
+	std::shared_ptr<AbstractStateFormula<T>> const & getRight() const {
+		return right;
 	}
 
 	/*!
-	 * @returns a pointer to the left child node
+	 * Sets the left child node.
+	 *
+	 * @param newLeft The new left child.
 	 */
-	std::shared_ptr<AbstractStateFormula<T>> const & getLeft() const {
-		return left;
+	void setLeft(std::shared_ptr<AbstractStateFormula<T>> const & newLeft) {
+		left = newLeft;
 	}
 
 	/*!
-	 * @returns a pointer to the right child node
+	 * Sets the right child node.
+	 *
+	 * @param newRight The new right child.
 	 */
-	std::shared_ptr<AbstractStateFormula<T>> const & getRight() const {
-		return right;
+	void setRight(std::shared_ptr<AbstractStateFormula<T>> const & newRight) {
+		right = newRight;
 	}
 
 	/*!
+	 * Checks if the left child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the left child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the left child is set.
 	 */
-	bool leftIsSet() const {
+	bool isLeftSet() const {
 		return left.get() != nullptr;
 	}
 
 	/*!
+	 * Checks if the right child is set, i.e. it does not point to null.
 	 *
-	 * @return True if the right child is set, i.e. it does not point to nullptr; false otherwise
+	 * @return True iff the right child is set.
 	 */
-	bool rightIsSet() const {
+	bool isRightSet() const {
 		return right.get() != nullptr;
 	}
 
 private:
+
+	// The left child node.
 	std::shared_ptr<AbstractStateFormula<T>> left;
+
+	// The right child node.
 	std::shared_ptr<AbstractStateFormula<T>> right;
 };
 
diff --git a/src/parser/CslParser.h b/src/parser/CslParser.h
index 9e9b85da5..ccb5b90c3 100644
--- a/src/parser/CslParser.h
+++ b/src/parser/CslParser.h
@@ -15,6 +15,11 @@
 namespace storm {
 namespace parser {
 
+/*!
+ * Reads a Csl formula from a string and returns the formula tree.
+ *
+ * If you want to read the formula from a file, use the LtlFileParser class instead.
+ */
 class CslParser {
 public:
 
@@ -24,8 +29,9 @@ public:
 	 *
 	 * If the string could not be parsed successfully, it will throw a wrongFormatException.
 	 *
-	 * @param formulaString The string representation of the formula
-	 * @throw wrongFormatException If the input could not be parsed successfully
+	 * @param formulaString The string representation of the formula.
+	 * @throw wrongFormatException If the input could not be parsed successfully.
+	 * @return A CslFilter maintaining the parsed formula.
 	 */
 	static std::shared_ptr<storm::property::csl::CslFilter<double>> parseCslFormula(std::string formulaString);
 
diff --git a/src/parser/LtlFileParser.h b/src/parser/LtlFileParser.h
index 2fd73d10f..f21210b7d 100644
--- a/src/parser/LtlFileParser.h
+++ b/src/parser/LtlFileParser.h
@@ -22,8 +22,8 @@ public:
 	/*!
 	 * Parses each line of a given file as prctl formula and returns a list containing the results of the parsing.
 	 *
-	 * @param filename
-	 * @return The list of parsed formulas
+	 * @param filename Name and path to the file in which the formula strings can be found.
+	 * @return The list of parsed formulas.
 	 */
 	static std::list<std::shared_ptr<storm::property::ltl::LtlFilter<double>>> parseLtlFile(std::string filename);
 };
diff --git a/src/parser/LtlParser.h b/src/parser/LtlParser.h
index e5f24dec3..ebbad77c0 100644
--- a/src/parser/LtlParser.h
+++ b/src/parser/LtlParser.h
@@ -28,8 +28,9 @@ public:
 	*
 	* If the string could not be parsed successfully, it will throw a wrongFormatException.
 	*
-	* @param formulaString The string representation of the formula
-	* @throw wrongFormatException If the input could not be parsed successfully
+	* @param formulaString The string representation of the formula.
+	* @throw wrongFormatException If the input could not be parsed successfully.
+	* @return A LtlFilter maintaining the parsed formula.
 	*/
 	static std::shared_ptr<storm::property::ltl::LtlFilter<double>> parseLtlFormula(std::string formulaString);
 
diff --git a/src/parser/PrctlFileParser.h b/src/parser/PrctlFileParser.h
index c992ddf03..615e219c1 100644
--- a/src/parser/PrctlFileParser.h
+++ b/src/parser/PrctlFileParser.h
@@ -20,9 +20,9 @@ class PrctlFileParser {
 public:
 
 	/*!
-	 * Parses each line of a given file as prctl formula and returns a list containing the results of the parsing.
+	 * Parses each line of a given file as Prctl formula and returns a list containing the results of the parsing.
 	 *
-	 * @param filename
+	 * @param filename Name and path to the file in which the formula strings can be found.
 	 * @return The list of parsed formulas
 	 */
 	static std::list<std::shared_ptr<storm::property::prctl::PrctlFilter<double>>> parsePrctlFile(std::string filename);
diff --git a/src/parser/PrctlParser.h b/src/parser/PrctlParser.h
index f8d5d6e78..75e13c117 100644
--- a/src/parser/PrctlParser.h
+++ b/src/parser/PrctlParser.h
@@ -16,14 +16,14 @@ class PrctlParser {
 public:
 
 	/*!
-	 * Reads a PRCTL formula from its string representation and parses it into a formula tree, consisting of
+	 * Reads a Prctl formula from its string representation and parses it into a formula tree, consisting of
 	 * classes in the namespace storm::property.
 	 *
 	 * If the string could not be parsed successfully, it will throw a wrongFormatException.
 	 *
 	 * @param formulaString The string representation of the formula
 	 * @throw wrongFormatException If the input could not be parsed successfully
-	 * @return A pointer to the parsed Prctl formula. If the line just contained a comment a nullptr will be returned instead.
+	 * @return A PrctlFilter maintaining the parsed formula. If the line just contained a comment a nullptr will be returned instead.
 	 */
 	static std::shared_ptr<storm::property::prctl::PrctlFilter<double>> parsePrctlFormula(std::string formulaString);