diff --git a/src/storm/logic/VariableSubstitutionVisitor.cpp b/src/storm/logic/VariableSubstitutionVisitor.cpp
deleted file mode 100644
index 7fae8498c..000000000
--- a/src/storm/logic/VariableSubstitutionVisitor.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-#include "storm/logic/VariableSubstitutionVisitor.h"
-
-#include "storm/logic/Formulas.h"
-
-namespace storm {
-    namespace logic {
-        
-        VariableSubstitutionVisitor::VariableSubstitutionVisitor(std::map<storm::expressions::Variable, storm::expressions::Expression> const& substitution) : substitution(substitution) {
-            // Intentionally left empty.
-        }
-        
-        std::shared_ptr<Formula> VariableSubstitutionVisitor::substitute(Formula const& f) const {
-            boost::any result = f.accept(*this, boost::any());
-            return boost::any_cast<std::shared_ptr<Formula>>(result);
-        }
-               
-        boost::any VariableSubstitutionVisitor::visit(TimeOperatorFormula const& f, boost::any const& data) const {
-            std::shared_ptr<Formula> subformula = boost::any_cast<std::shared_ptr<Formula>>(f.getSubformula().accept(*this, data));
-            return std::static_pointer_cast<Formula>(std::make_shared<TimeOperatorFormula>(subformula, substituteOperatorInformation(f.getOperatorInformation())));
-        }
-        
-        boost::any VariableSubstitutionVisitor::visit(LongRunAverageOperatorFormula const& f, boost::any const& data) const {
-            std::shared_ptr<Formula> subformula = boost::any_cast<std::shared_ptr<Formula>>(f.getSubformula().accept(*this, data));
-            return std::static_pointer_cast<Formula>(std::make_shared<LongRunAverageOperatorFormula>(subformula, substituteOperatorInformation(f.getOperatorInformation())));
-        }
-        
-        boost::any VariableSubstitutionVisitor::visit(ProbabilityOperatorFormula const& f, boost::any const& data) const {
-            std::shared_ptr<Formula> subformula = boost::any_cast<std::shared_ptr<Formula>>(f.getSubformula().accept(*this, data));
-            return std::static_pointer_cast<Formula>(std::make_shared<ProbabilityOperatorFormula>(subformula, substituteOperatorInformation(f.getOperatorInformation())));
-        }
-        
-        boost::any VariableSubstitutionVisitor::visit(RewardOperatorFormula const& f, boost::any const& data) const {
-            std::shared_ptr<Formula> subformula = boost::any_cast<std::shared_ptr<Formula>>(f.getSubformula().accept(*this, data));
-            return std::static_pointer_cast<Formula>(std::make_shared<RewardOperatorFormula>(subformula, f.getOptionalRewardModelName(), substituteOperatorInformation(f.getOperatorInformation())));
-        }
-        
-        boost::any VariableSubstitutionVisitor::visit(BoundedUntilFormula const& f, boost::any const& data) const {
-            std::vector<boost::optional<TimeBound>> lowerBounds, upperBounds;
-            std::vector<TimeBoundReference> timeBoundReferences;
-            for (uint64_t i = 0; i < f.getDimension(); ++i) {
-                if (f.hasLowerBound(i)) {
-                    lowerBounds.emplace_back(TimeBound(f.isLowerBoundStrict(i), f.getLowerBound(i).substitute(substitution)));
-                } else {
-                    lowerBounds.emplace_back();
-                }
-                if (f.hasUpperBound(i)) {
-                    upperBounds.emplace_back(TimeBound(f.isUpperBoundStrict(i), f.getUpperBound(i).substitute(substitution)));
-                } else {
-                    upperBounds.emplace_back();
-                }
-                timeBoundReferences.push_back(f.getTimeBoundReference(i));
-            }
-            if (f.hasMultiDimensionalSubformulas()) {
-                std::vector<std::shared_ptr<Formula const>> leftSubformulas, rightSubformulas;
-                for (uint64_t i = 0; i < f.getDimension(); ++i) {
-                    leftSubformulas.push_back(boost::any_cast<std::shared_ptr<Formula>>(f.getLeftSubformula(i).accept(*this, data)));
-                    rightSubformulas.push_back(boost::any_cast<std::shared_ptr<Formula>>(f.getRightSubformula(i).accept(*this, data)));
-                }
-                return std::static_pointer_cast<Formula>(std::make_shared<BoundedUntilFormula>(leftSubformulas, rightSubformulas, lowerBounds, upperBounds, timeBoundReferences));
-            } else {
-                std::shared_ptr<Formula> left = boost::any_cast<std::shared_ptr<Formula>>(f.getLeftSubformula().accept(*this, data));
-                std::shared_ptr<Formula> right = boost::any_cast<std::shared_ptr<Formula>>(f.getRightSubformula().accept(*this, data));
-                return std::static_pointer_cast<Formula>(std::make_shared<BoundedUntilFormula>(left, right, lowerBounds, upperBounds, timeBoundReferences));
-            }
-        }
-        
-        boost::any VariableSubstitutionVisitor::visit(CumulativeRewardFormula const& f, boost::any const&) const {
-            std::vector<TimeBound> bounds;
-            std::vector<TimeBoundReference> timeBoundReferences;
-            for (uint64_t i = 0; i < f.getDimension(); ++i) {
-                bounds.emplace_back(TimeBound(f.isBoundStrict(i), f.getBound(i).substitute(substitution)));
-                timeBoundReferences.push_back(f.getTimeBoundReference(i));
-            }
-            return std::static_pointer_cast<Formula>(std::make_shared<CumulativeRewardFormula>(bounds, timeBoundReferences));
-        }
-        
-        boost::any VariableSubstitutionVisitor::visit(InstantaneousRewardFormula const& f, boost::any const&) const {
-            return std::static_pointer_cast<Formula>(std::make_shared<InstantaneousRewardFormula>(f.getBound().substitute(substitution), f.getTimeBoundType()));
-        }
-        
-        boost::any VariableSubstitutionVisitor::visit(AtomicExpressionFormula const& f, boost::any const&) const {
-            return std::static_pointer_cast<Formula>(std::make_shared<AtomicExpressionFormula>(f.getExpression().substitute(substitution)));
-        }
-        
-        OperatorInformation VariableSubstitutionVisitor::substituteOperatorInformation(OperatorInformation const& operatorInformation) const {
-            boost::optional<Bound> bound;
-            if(operatorInformation.bound) {
-               bound = Bound(operatorInformation.bound->comparisonType, operatorInformation.bound->threshold.substitute(substitution));
-            }
-            return OperatorInformation(operatorInformation.optimalityType, bound);
-        }
-
-    }
-}
diff --git a/src/storm/logic/VariableSubstitutionVisitor.h b/src/storm/logic/VariableSubstitutionVisitor.h
deleted file mode 100644
index 80156c064..000000000
--- a/src/storm/logic/VariableSubstitutionVisitor.h
+++ /dev/null
@@ -1,40 +0,0 @@
-#ifndef STORM_LOGIC_VARIABLESUBSTITUTIONVISITOR_H_
-#define STORM_LOGIC_VARIABLESUBSTITUTIONVISITOR_H_
-
-#include <map>
-
-#include "storm/logic/CloneVisitor.h"
-
-#include "storm/storage/expressions/Expression.h"
-
-namespace storm {
-    namespace logic {
-        
-        class VariableSubstitutionVisitor : public CloneVisitor {
-        public:
-            VariableSubstitutionVisitor(std::map<storm::expressions::Variable, storm::expressions::Expression> const& substitution);
-            
-            std::shared_ptr<Formula> substitute(Formula const& f) const;
-            
-
-            virtual boost::any visit(TimeOperatorFormula const& f, boost::any const& data) const override;
-            virtual boost::any visit(LongRunAverageOperatorFormula const& f, boost::any const& data) const override;
-            virtual boost::any visit(ProbabilityOperatorFormula const& f, boost::any const& data) const override;
-            virtual boost::any visit(RewardOperatorFormula const& f, boost::any const& data) const override;
-            virtual boost::any visit(BoundedUntilFormula const& f, boost::any const& data) const override;
-            virtual boost::any visit(CumulativeRewardFormula const& f, boost::any const& data) const override;
-            virtual boost::any visit(InstantaneousRewardFormula const& f, boost::any const& data) const override;
-            virtual boost::any visit(AtomicExpressionFormula const& f, boost::any const& data) const override;
-            
-        private:
-            
-            OperatorInformation substituteOperatorInformation(OperatorInformation const& operatorInformation) const;
-            
-            std::map<storm::expressions::Variable, storm::expressions::Expression> const& substitution;
-        };
-        
-    }
-}
-
-
-#endif /* STORM_LOGIC_VARIABLESUBSTITUTIONVISITOR_H_ */