diff --git a/src/storm-pomdp-cli/settings/PomdpSettings.cpp b/src/storm-pomdp-cli/settings/PomdpSettings.cpp
index 241c5fd99..f529d8073 100644
--- a/src/storm-pomdp-cli/settings/PomdpSettings.cpp
+++ b/src/storm-pomdp-cli/settings/PomdpSettings.cpp
@@ -34,6 +34,7 @@
 #include "storm-pomdp-cli/settings/modules/POMDPSettings.h"
 #include "storm-pomdp-cli/settings/modules/QualitativePOMDPAnalysisSettings.h"
 #include "storm-pomdp-cli/settings/modules/BeliefExplorationSettings.h"
+#include "storm-pomdp-cli/settings/modules/ToParametricSettings.h"
 
 
 namespace storm {
@@ -50,6 +51,7 @@ namespace storm {
             storm::settings::addModule<storm::settings::modules::POMDPSettings>();
             storm::settings::addModule<storm::settings::modules::QualitativePOMDPAnalysisSettings>();
             storm::settings::addModule<storm::settings::modules::BeliefExplorationSettings>();
+            storm::settings::addModule<storm::settings::modules::ToParametricSettings>();
         
             storm::settings::addModule<storm::settings::modules::TransformationSettings>();
             storm::settings::addModule<storm::settings::modules::GmmxxEquationSolverSettings>();
diff --git a/src/storm-pomdp-cli/settings/modules/POMDPSettings.cpp b/src/storm-pomdp-cli/settings/modules/POMDPSettings.cpp
index c009ba36d..d6c17224f 100644
--- a/src/storm-pomdp-cli/settings/modules/POMDPSettings.cpp
+++ b/src/storm-pomdp-cli/settings/modules/POMDPSettings.cpp
@@ -19,15 +19,10 @@ namespace storm {
             std::vector<std::string> beliefExplorationModes = {"both", "discretize", "unfold"};
             const std::string qualitativeReductionOption = "qualitativereduction";
             const std::string analyzeUniqueObservationsOption = "uniqueobservations";
-            const std::string mecReductionOption = "mecreduction";
             const std::string selfloopReductionOption = "selfloopreduction";
             const std::string memoryBoundOption = "memorybound";
             const std::string memoryPatternOption = "memorypattern";
             std::vector<std::string> memoryPatterns = {"trivial", "fixedcounter", "selectivecounter", "ring", "fixedring", "settablebits", "full"};
-            const std::string fscmode = "fscmode";
-            std::vector<std::string> fscModes = {"standard", "simple-linear", "simple-linear-inverse"};
-            const std::string transformBinaryOption = "transformbinary";
-            const std::string transformSimpleOption = "transformsimple";
             const std::string checkFullyObservableOption = "check-fully-observable";
             const std::string isQualitativeOption = "qualitative-analysis";
 
@@ -36,13 +31,9 @@ namespace storm {
                 this->addOption(storm::settings::OptionBuilder(moduleName, exportAsParametricModelOption, false, "Export the parametric file.").addArgument(storm::settings::ArgumentBuilder::createStringArgument("filename", "The name of the file to which to write the model.").build()).build());
                 this->addOption(storm::settings::OptionBuilder(moduleName, qualitativeReductionOption, false, "Reduces the model size by performing qualitative analysis (E.g. merge states with prob. 1.").build());
                 this->addOption(storm::settings::OptionBuilder(moduleName, analyzeUniqueObservationsOption, false, "Computes the states with a unique observation").build());
-                this->addOption(storm::settings::OptionBuilder(moduleName, mecReductionOption, false, "Reduces the model size by analyzing maximal end components").build());
                 this->addOption(storm::settings::OptionBuilder(moduleName, selfloopReductionOption, false, "Reduces the model size by removing self loop actions").build());
                 this->addOption(storm::settings::OptionBuilder(moduleName, memoryBoundOption, false, "Sets the maximal number of allowed memory states (1 means memoryless schedulers).").addArgument(storm::settings::ArgumentBuilder::createUnsignedIntegerArgument("bound", "The maximal number of memory states.").setDefaultValueUnsignedInteger(1).addValidatorUnsignedInteger(storm::settings::ArgumentValidatorFactory::createUnsignedGreaterValidator(0)).build()).build());
                 this->addOption(storm::settings::OptionBuilder(moduleName, memoryPatternOption, false, "Sets the pattern of the considered memory structure").addArgument(storm::settings::ArgumentBuilder::createStringArgument("name", "Pattern name.").addValidatorString(ArgumentValidatorFactory::createMultipleChoiceValidator(memoryPatterns)).setDefaultValueString("full").build()).build());
-                this->addOption(storm::settings::OptionBuilder(moduleName, fscmode, false, "Sets the way the pMC is obtained").addArgument(storm::settings::ArgumentBuilder::createStringArgument("type", "type name").addValidatorString(ArgumentValidatorFactory::createMultipleChoiceValidator(fscModes)).setDefaultValueString("standard").build()).build());
-                this->addOption(storm::settings::OptionBuilder(moduleName, transformBinaryOption, false, "Transforms the pomdp to a binary pomdp.").build());
-                this->addOption(storm::settings::OptionBuilder(moduleName, transformSimpleOption, false, "Transforms the pomdp to a binary and simple pomdp.").build());
                 this->addOption(storm::settings::OptionBuilder(moduleName, beliefExplorationOption, false,"Analyze the POMDP by exploring the belief state-space.").addArgument(storm::settings::ArgumentBuilder::createStringArgument("mode", "Sets whether lower, upper, or interval result bounds are computed.").addValidatorString(ArgumentValidatorFactory::createMultipleChoiceValidator(beliefExplorationModes)).setDefaultValueString("both").makeOptional().build()).build());
                 this->addOption(storm::settings::OptionBuilder(moduleName, checkFullyObservableOption, false, "Performs standard model checking on the underlying MDP").build());
                 this->addOption(storm::settings::OptionBuilder(moduleName, isQualitativeOption, false, "Sets the option qualitative analysis").build());
@@ -68,10 +59,6 @@ namespace storm {
                 return this->getOption(analyzeUniqueObservationsOption).getHasOptionBeenSet();
             }
             
-            bool POMDPSettings::isMecReductionSet() const {
-                return this->getOption(mecReductionOption).getHasOptionBeenSet();
-            }
-            
             bool POMDPSettings::isSelfloopReductionSet() const {
                 return this->getOption(selfloopReductionOption).getHasOptionBeenSet();
             }
@@ -123,18 +110,7 @@ namespace storm {
                 STORM_LOG_THROW(false, storm::exceptions::InvalidArgumentException, "The name of the memory pattern is unknown.");
             }
 
-            std::string POMDPSettings::getFscApplicationTypeString() const {
-                return this->getOption(fscmode).getArgumentByName("type").getValueAsString();
-            }
-            
-            bool POMDPSettings::isTransformBinarySet() const {
-                return this->getOption(transformBinaryOption).getHasOptionBeenSet();
-            }
 
-            bool POMDPSettings::isTransformSimpleSet() const {
-                return this->getOption(transformSimpleOption).getHasOptionBeenSet();
-            }
-            
             void POMDPSettings::finalize() {
             }
 
diff --git a/src/storm-pomdp-cli/settings/modules/POMDPSettings.h b/src/storm-pomdp-cli/settings/modules/POMDPSettings.h
index 30b0adc53..2d9b8c59b 100644
--- a/src/storm-pomdp-cli/settings/modules/POMDPSettings.h
+++ b/src/storm-pomdp-cli/settings/modules/POMDPSettings.h
@@ -31,13 +31,9 @@ namespace storm {
                 bool isBeliefExplorationDiscretizeSet() const;
                 bool isBeliefExplorationUnfoldSet() const;
                 bool isAnalyzeUniqueObservationsSet() const;
-                bool isMecReductionSet() const;
                 bool isSelfloopReductionSet() const;
-                bool isTransformSimpleSet() const;
-                bool isTransformBinarySet() const;
                 bool isCheckFullyObservableSet() const;
                 bool isQualitativeAnalysisSet() const;
-                std::string getFscApplicationTypeString() const;
                 uint64_t getMemoryBound() const;
 
                 storm::storage::PomdpMemoryPattern getMemoryPattern() const;
diff --git a/src/storm-pomdp-cli/settings/modules/ToParametricSettings.cpp b/src/storm-pomdp-cli/settings/modules/ToParametricSettings.cpp
new file mode 100644
index 000000000..66abc3ee7
--- /dev/null
+++ b/src/storm-pomdp-cli/settings/modules/ToParametricSettings.cpp
@@ -0,0 +1,56 @@
+#include "storm-pomdp-cli/settings/modules/ToParametricSettings.h"
+
+#include "storm/settings/SettingsManager.h"
+#include "storm/settings/SettingMemento.h"
+#include "storm/settings/Option.h"
+#include "storm/settings/OptionBuilder.h"
+#include "storm/settings/ArgumentBuilder.h"
+
+#include "storm/exceptions/InvalidArgumentException.h"
+
+namespace storm {
+    namespace settings {
+        namespace modules {
+
+            const std::string ToParametricSettings::moduleName = "toparametric";
+            const std::string mecReductionOption = "mecreduction";
+            const std::string selfloopReductionOption = "selfloopreduction";
+            const std::string fscmode = "fscmode";
+            std::vector<std::string> fscModes = {"standard", "simple-linear", "simple-linear-inverse"};
+            const std::string transformBinaryOption = "transformbinary";
+            const std::string transformSimpleOption = "transformsimple";
+
+            ToParametricSettings::ToParametricSettings() : ModuleSettings(moduleName) {
+                this->addOption(storm::settings::OptionBuilder(moduleName, mecReductionOption, false, "Reduces the model size by analyzing maximal end components").build());
+                this->addOption(storm::settings::OptionBuilder(moduleName, fscmode, false, "Sets the way the pMC is obtained").addArgument(storm::settings::ArgumentBuilder::createStringArgument("type", "type name").addValidatorString(ArgumentValidatorFactory::createMultipleChoiceValidator(fscModes)).setDefaultValueString("standard").build()).build());
+                this->addOption(storm::settings::OptionBuilder(moduleName, transformBinaryOption, false, "Transforms the pomdp to a binary pomdp.").build());
+                this->addOption(storm::settings::OptionBuilder(moduleName, transformSimpleOption, false, "Transforms the pomdp to a binary and simple pomdp.").build());
+            }
+
+
+            bool ToParametricSettings::isMecReductionSet() const {
+                return this->getOption(mecReductionOption).getHasOptionBeenSet();
+            }
+
+            std::string ToParametricSettings::getFscApplicationTypeString() const {
+                return this->getOption(fscmode).getArgumentByName("type").getValueAsString();
+            }
+
+            bool ToParametricSettings::isTransformBinarySet() const {
+                return this->getOption(transformBinaryOption).getHasOptionBeenSet();
+            }
+
+            bool ToParametricSettings::isTransformSimpleSet() const {
+                return this->getOption(transformSimpleOption).getHasOptionBeenSet();
+            }
+
+            void ToParametricSettings::finalize() {
+            }
+
+            bool ToParametricSettings::check() const {
+                return true;
+            }
+
+        } // namespace modules
+    } // namespace settings
+} // namespace storm
diff --git a/src/storm-pomdp-cli/settings/modules/ToParametricSettings.h b/src/storm-pomdp-cli/settings/modules/ToParametricSettings.h
new file mode 100644
index 000000000..e29586709
--- /dev/null
+++ b/src/storm-pomdp-cli/settings/modules/ToParametricSettings.h
@@ -0,0 +1,49 @@
+#pragma once
+
+#pragma once
+
+#include "storm-config.h"
+#include "storm/settings/modules/ModuleSettings.h"
+#include "storm-pomdp/storage/PomdpMemory.h"
+
+namespace storm {
+    namespace settings {
+        namespace modules {
+
+            /*!
+             * This class represents the settings for POMDP model checking.
+             */
+            class ToParametricSettings : public ModuleSettings {
+            public:
+
+                /*!
+                 * Creates a new set of POMDP settings.
+                 */
+                ToParametricSettings();
+
+                virtual ~ToParametricSettings() = default;
+
+                bool isExportToParametricSet() const;
+                std::string getExportToParametricFilename() const;
+
+                bool isQualitativeReductionSet() const;
+
+                bool isMecReductionSet() const;
+                bool isTransformSimpleSet() const;
+                bool isTransformBinarySet() const;
+                std::string getFscApplicationTypeString() const;
+
+                bool check() const override;
+                void finalize() override;
+
+                // The name of the module.
+                static const std::string moduleName;
+
+            private:
+
+
+            };
+
+        } // namespace modules
+    } // namespace settings
+} // namespace storm
diff --git a/src/storm-pomdp-cli/storm-pomdp.cpp b/src/storm-pomdp-cli/storm-pomdp.cpp
index d42ac48e6..979f76474 100644
--- a/src/storm-pomdp-cli/storm-pomdp.cpp
+++ b/src/storm-pomdp-cli/storm-pomdp.cpp
@@ -5,6 +5,7 @@
 #include "storm-pomdp-cli/settings/modules/POMDPSettings.h"
 #include "storm-pomdp-cli/settings/modules/QualitativePOMDPAnalysisSettings.h"
 #include "storm-pomdp-cli/settings/modules/BeliefExplorationSettings.h"
+#include "storm-pomdp-cli/settings/modules/ToParametricSettings.h"
 
 #include "storm-pomdp-cli/settings/PomdpSettings.h"
 #include "storm/analysis/GraphConditions.h"
@@ -268,6 +269,8 @@ namespace storm {
             template<typename ValueType, storm::dd::DdType DdType>
             bool performTransformation(std::shared_ptr<storm::models::sparse::Pomdp<ValueType>>& pomdp, storm::logic::Formula const& formula) {
                 auto const& pomdpSettings = storm::settings::getModule<storm::settings::modules::POMDPSettings>();
+                auto const& ioSettings = storm::settings::getModule<storm::settings::modules::IOSettings>();
+                auto const& transformSettings = storm::settings::getModule<storm::settings::modules::ToParametricSettings>();
                 bool transformationPerformed = false;
                 bool memoryUnfolded = false;
                 if (pomdpSettings.getMemoryBound() > 1) {
@@ -284,7 +287,7 @@ namespace storm {
         
                 // From now on the pomdp is considered memoryless
         
-                if (pomdpSettings.isMecReductionSet()) {
+                if (transformSettings.isMecReductionSet()) {
                     STORM_PRINT_AND_LOG("Eliminating mec choices ...");
                     // Note: Elimination of mec choices only preserves memoryless schedulers.
                     uint64_t oldChoiceCount = pomdp->getNumberOfChoices();
@@ -296,8 +299,8 @@ namespace storm {
                     transformationPerformed = true;
                 }
         
-                if (pomdpSettings.isTransformBinarySet() || pomdpSettings.isTransformSimpleSet()) {
-                    if (pomdpSettings.isTransformSimpleSet()) {
+                if (transformSettings.isTransformBinarySet() || transformSettings.isTransformSimpleSet()) {
+                    if (transformSettings.isTransformSimpleSet()) {
                         STORM_PRINT_AND_LOG("Transforming the POMDP to a simple POMDP.");
                         pomdp = storm::transformer::BinaryPomdpTransformer<ValueType>().transform(*pomdp, true);
                     } else {
@@ -312,17 +315,16 @@ namespace storm {
                 if (pomdpSettings.isExportToParametricSet()) {
                     STORM_PRINT_AND_LOG("Transforming memoryless POMDP to pMC...");
                     storm::transformer::ApplyFiniteSchedulerToPomdp<ValueType> toPMCTransformer(*pomdp);
-                    std::string transformMode = pomdpSettings.getFscApplicationTypeString();
+                    std::string transformMode = transformSettings.getFscApplicationTypeString();
                     auto pmc = toPMCTransformer.transform(storm::transformer::parsePomdpFscApplicationMode(transformMode));
                     STORM_PRINT_AND_LOG(" done." << std::endl);
                     pmc->printModelInformationToStream(std::cout);
-                    STORM_PRINT_AND_LOG("Simplifying pMC...");
-                    //if (generalSettings.isBisimulationSet()) {
-                    pmc = storm::api::performBisimulationMinimization<storm::RationalFunction>(pmc->template as<storm::models::sparse::Dtmc<storm::RationalFunction>>(),{formula.asSharedPointer()}, storm::storage::BisimulationType::Strong)->template as<storm::models::sparse::Dtmc<storm::RationalFunction>>();
-        
+                    //if (transformSettings.isSimplificationSet()) {
+                        STORM_PRINT_AND_LOG("Simplifying pMC...");
+                        pmc = storm::api::performBisimulationMinimization<storm::RationalFunction>(pmc->template as<storm::models::sparse::Dtmc<storm::RationalFunction>>(),{formula.asSharedPointer()}, storm::storage::BisimulationType::Strong)->template as<storm::models::sparse::Dtmc<storm::RationalFunction>>();
+                        STORM_PRINT_AND_LOG(" done." << std::endl);
+                        pmc->printModelInformationToStream(std::cout);
                     //}
-                    STORM_PRINT_AND_LOG(" done." << std::endl);
-                    pmc->printModelInformationToStream(std::cout);
                     STORM_PRINT_AND_LOG("Exporting pMC...");
                     storm::analysis::ConstraintCollector<storm::RationalFunction> constraints(*pmc);
                     auto const& parameterSet = constraints.getVariables();