diff --git a/systems_design/src/aircraftSystems/conventionalATA27.cpp b/systems_design/src/aircraftSystems/conventionalATA27.cpp
index e7aca9908bb9242bd1f44fe482a550510c530ae5..cf5ba26a5f05f896eb3bde5951cfecbc790f3a5b 100644
--- a/systems_design/src/aircraftSystems/conventionalATA27.cpp
+++ b/systems_design/src/aircraftSystems/conventionalATA27.cpp
@@ -88,7 +88,7 @@ void conventionalATA27::readParameters(const node& config) {
     flightControl.highLift.clear();
     // Flight Control
     std::string flightControlConfig = "/module_configuration_file/program_settings/systems_constants/flight_controls";
-    flightControl.flyMission = config.at(flightControlConfig + "/calculate_mission_loads/value");
+    flightControl.flyMission = EndnodeReadOnly<bool>(flightControlConfig + "/calculate_mission_loads").read(config).value();
     if (flightControl.flyMission) {
         myRuntimeInfo->out << "Energy consumption of the flight control is calculated via rudder deflections in the mission." << std::endl;
     } else {
diff --git a/systems_design/src/missionData.cpp b/systems_design/src/missionData.cpp
index 486624051d6c4a8179ea7406e2b49c2cb49b574b..6ec59d47ea6d262f596d2e1a15b4703e0b87d9ab 100644
--- a/systems_design/src/missionData.cpp
+++ b/systems_design/src/missionData.cpp
@@ -19,9 +19,9 @@
 
 missionData::missionData(const std::string& fileNameAndDir)
     :
-    missionFile(fileNameAndDir),
-    missionXML_tmp(aixml::openDocument(missionFile)) {
+    missionFile(fileNameAndDir){
     myRuntimeInfo->out << "Reading the Mission: " << fileNameAndDir << std::endl;
+    node& missionXML_tmp = aixml::openDocument(missionFile);
     missionUtilization = EndnodeReadOnly<double>("mission/number_of_pax").read(missionXML_tmp).value();
     delta_ISA = 0.; //NOTE: All systems are sized and calculated for ISA conditions and not for the respective mission temperature
     numberDepartureSteps = missionXML_tmp.getVector("mission/departure/departure_step").size();
@@ -244,3 +244,18 @@ void missionData::getMissionPoint() {
     Steps.back().Point.dynamicPressure = 0.5 * myISA.getDensity(Steps.back().Point.Altitude) *
                                          pow(Steps.back().Point.TAS, 2.);
 }
+
+bool missionData::check_file_for_offtakes(const node& mission_xml) {
+    bool offtakes_written = false;
+    std::string xml_string = "mission/departure/departure_step@0";
+    //possible offtake types and path to their nodes
+    std::string sub_path_shaft_power = xml_string + "/shaft_power_takeoff_schedule";
+    std::string sub_path_bleed_air = xml_string + "/bleed_air_takeoff_schedule";
+    //check if nodes with these paths exist. If yes, offtakes have been written.
+        if (mission_xml.find(sub_path_shaft_power)) {
+            offtakes_written = true;
+        } else if (mission_xml.find(sub_path_bleed_air)) {
+            offtakes_written = true;
+        }
+    return offtakes_written;
+}
diff --git a/systems_design/src/missionData.h b/systems_design/src/missionData.h
index 1da754ce8b55b3af7ec88fd7c5022bc82510b720..9169b4c1fecf1016ce696a68a19fa0fb97dc2d6d 100644
--- a/systems_design/src/missionData.h
+++ b/systems_design/src/missionData.h
@@ -88,11 +88,18 @@ class missionData {
     };
     std::vector<missionStep> Steps;//vector containing the mission steps
 
+    /** \brief checks in mission file if offtakes have been written already.
+     * \param mission_xml mission file
+     * \return bool - true: offtakes already written to file, false: no offtakes written
+     * \note only checks if first offtake node is written and assumes all or no offtakes are written from that
+     */
+    bool check_file_for_offtakes(const node& mission_xml);
+
     explicit missionData(const std::string& fileNameAndDir);
     virtual ~missionData();
 
  private:
-    node& missionXML_tmp;/*mission xml node*/
+    //node& missionXML_tmp;/*mission xml node*/
 
     int numberDepartureSteps;/*number of steps in the mission segment "departure"*/
     int numberCruiseSteps;/*number of steps in the mission segment "cruise"*/
diff --git a/systems_design/src/standardConfig.cpp b/systems_design/src/standardConfig.cpp
index cb2487b32a72a818e6b5f5a8baf4d560a633713a..aa6ca5daaecebc2ce72ed30777fd2828ddf752dd 100644
--- a/systems_design/src/standardConfig.cpp
+++ b/systems_design/src/standardConfig.cpp
@@ -139,13 +139,13 @@ void standardConfig::readVirtualSystems(const node& config) {
 void standardConfig::readProgramSettings(const node& config) {
     texReportWithoutMasses = EndnodeReadOnly<bool>("/module_configuration_file/program_settings/tex_report_without_masses").read(config).value();
     controlDeviceWarning = EndnodeReadOnly<bool>("/module_configuration_file/program_settings/control_device_warning").read(config).value();
-    designCase = EndnodeReadOnly<bool>("/module_configuration_file/program_settings/design_case").read(config).value();
     if (designCase == true) {
         theProgramName = std::string(TOOL_NAME) + "_design";
+    } else if (reqMission == true) {
+        theProgramName = std::string(TOOL_NAME) + "_requirment";
     } else {
         theProgramName = std::string(TOOL_NAME) + "_study";
     }
-    reqMission = EndnodeReadOnly<bool>("/module_configuration_file/program_settings/offtakes_for_requirement_mission").read(config).value();
     /* Factors are needed for different aircraft systems */
     SystemsFactor = config.at("/module_configuration_file/program_settings/scaling_factors/systems/value");
     OpItemsFactor = config.at("/module_configuration_file/program_settings/scaling_factors/operator_items/value");
diff --git a/systems_design/src/standardConfig.h b/systems_design/src/standardConfig.h
index abab4bfcce3251312339a5303d47befd7faf4868..93dc9abf56cb59f00f142b73624b0256f7d491b0 100644
--- a/systems_design/src/standardConfig.h
+++ b/systems_design/src/standardConfig.h
@@ -29,13 +29,17 @@ class standardConfig {
  public:
     //Typedefs, Classes, Enums
     explicit standardConfig(const node& config) {
-            designCase = EndnodeReadOnly<bool>("/module_configuration_file/program_settings/design_case").read(config).value();
-            if (designCase == true) {
-                theProgramName = std::string(TOOL_NAME) + "_design";
+            std::string mission_mode = EndnodeReadOnly<std::string>("/module_configuration_file/program_settings/mission_mode").read(config).value();
+            if (mission_mode == "design") {
+                designCase = true;
+            } else if (mission_mode == "study") {
+                //study mode is always the third option and does not have a variable to check for it
+            } else if (mission_mode == "requirement") {
+                reqMission = true;
             } else {
-                theProgramName = std::string(TOOL_NAME) + "_study";
+                myRuntimeInfo->err << "Unknown mission file type: " << mission_mode << std::endl;
+                exit(1);
             }
-            reqMission = config.at("/module_configuration_file/program_settings/offtakes_for_requirement_mission/value");
         }
 
     /** \brief class that contains the description of a system from the config file (name,
@@ -179,8 +183,8 @@ class standardConfig {
     bool texReportWithoutMasses;/*if this is true, the TeX report is written only with approvals*/
     bool controlDeviceWarning;/*if this is true a warning is issued if no suitable method is available for ControlDevice*/
 
-    bool designCase;/**< Determine whether system architecture is also sized **/
-    bool reqMission;/**< Determining the offtakes for Requirement Mission **/
+    bool designCase = false;/**< Determine whether system architecture is also sized **/
+    bool reqMission = false;/**< Determining the offtakes for Requirement Mission **/
 
     double SystemsFactor;/**< - Factor for Systems Masses**/
     double FurnishingsFactor;/**<- Factor for Furnishings Masses**/
diff --git a/systems_design/src/standardData.h b/systems_design/src/standardData.h
index f13a933bcb15e8cbe34136eafe2c21a436b585a5..ff627e1a17bc2518f46fcb483b0a8032cb2bd411 100644
--- a/systems_design/src/standardData.h
+++ b/systems_design/src/standardData.h
@@ -41,13 +41,11 @@ class standardData {
         int numberWindows = 0;/**< number of windows*/
 
         double payload_tube_x_ref = 0;/**<[m] point between cockpit and cabin*/
-        double cabinDeckAreaTotal = 0.;/**<[m^2] total passenger deck area */
         std::vector<double> cabinVolume; /**<[m^2] cabin volume of the passenger deck*/
         double cabinVolumeTotal = 0.;/**<[m^3] total cabin volume */
 
         int cargoDecks = 0;/**< number of cargo decks*/
         std::vector <double> cargoArea;/**<[m^2] cargo area of the deck*/
-        double cargoAreaTotal = 0.;/**<[m^2] total cargo area */
         std::vector<double> cargoVolume;/**<[m^3] cargo deck volume */
         double cargoVolumeTotal = 0.; /**<[m^3] total cargo volume*/
 
diff --git a/systems_design/src/standardSystemsDesign.cpp b/systems_design/src/standardSystemsDesign.cpp
index 125a1669de622ab0cadca52913b00e3b57a70d45..49496f11e8e88c7b9bcf1d87ff7927b9880bd3c4 100644
--- a/systems_design/src/standardSystemsDesign.cpp
+++ b/systems_design/src/standardSystemsDesign.cpp
@@ -12,6 +12,7 @@
 #include <memory>
 #include <string>
 #include <cstdlib>
+#include <utility>
 #include "standardSystemsDesign.h"
 #include "systemsIOData.h"
 #include "standardData.h"
@@ -64,10 +65,13 @@ void standardSystemsDesign::run() {
     myRuntimeInfo->out << "Run systemsDesign standard strategy" << std::endl;
     /* Run modes */
     if (data_->configuration.designCase) {
-        myRuntimeInfo->out << "Run - SizingMode" << std::endl;
+        myRuntimeInfo->out << "Run - Sizing Mode" << std::endl;
         size();
+    } else if (data_->configuration.reqMission) {
+        myRuntimeInfo->out << "Run - Requirement Mission Mode" << std::endl;
+        requirements_mission();
     } else {
-        myRuntimeInfo->out << "Run - StudyMode" << std::endl;
+        myRuntimeInfo->out << "Run - Study Mode" << std::endl;
         study();
     }
 }
@@ -82,7 +86,7 @@ void standardSystemsDesign::update() {
         }
     }
     /* Update mission file */
-    data_->updateMissionXML(rtIO_->getMissionDataDir()); //this updates all values that are calculated with the mission steps, including values in the acxml
+    data_->updateMissionXML(rtIO_->getMissionDataDir());//this updates all values that are calculated with the mission steps, including values in the acxml
 }
 
 void standardSystemsDesign::report() {
@@ -103,6 +107,7 @@ void standardSystemsDesign::save() {
 /* METHODS */
 
 void standardSystemsDesign::size() {
+    /*Design Mission*/
     myRuntimeInfo->out << "Start calculation ..." << std::endl;
     /* Calculating performance profile */
     calculatePerformanceProfile();
@@ -111,20 +116,23 @@ void standardSystemsDesign::size() {
     getSystemsMass();
     myWeightsPt = new weightsAndCGs(data_);
     myWeightsPt->getWeights();
-    myRuntimeInfo->out << "... calculation finished!" << std::endl;
+    myRuntimeInfo->out << "... design mission calculation finished!" << std::endl;
 }
 
 void standardSystemsDesign::study() {
+    /*Study Mission*/
     myRuntimeInfo->out << "Start calculation ..." << std::endl;
     /* Calculating performance profile */
-    calculatePerformanceProfile();
+    calculatePerformanceProfile();//for study mission
+    myRuntimeInfo->out << "No system masses are determined for the analysis calculation.!" << std::endl;
+}
+
+void standardSystemsDesign::requirements_mission() {
+    /*Requirements Mission*/
+    myRuntimeInfo->out << "Start calculation ..." << std::endl;
+    /* Calculating performance profile */
+    calculatePerformanceProfile();//for study mission
     myRuntimeInfo->out << "No system masses are determined for the analysis calculation.!" << std::endl;
-    bool reqMissionOfftakesWritten(rtIO_->acxml.at("AcftExchangeFile/Performance/RequirementsChecks/MissionFile").getIntAttrib("OfftakesWritten"));
-    if (!reqMissionOfftakesWritten && data_->configuration.reqMission) {
-        myRuntimeInfo->out << "Calculation for requirement mission ..." << std::endl;
-        calculatePerformanceProfile();
-        rtIO_->acxml.at("AcftExchangeFile/Performance/RequirementsChecks/MissionFile").setAttrib("OfftakesWritten", 1);
-    }
 }
 
 void standardSystemsDesign::initializeSystems() {
diff --git a/systems_design/src/standardSystemsDesign.h b/systems_design/src/standardSystemsDesign.h
index a7e521be341c2dfe0e84798784605d951e4789e0..08048a95d701f18a9e421058d5f5e63e811e8c8e 100644
--- a/systems_design/src/standardSystemsDesign.h
+++ b/systems_design/src/standardSystemsDesign.h
@@ -69,14 +69,17 @@ class standardSystemsDesign : public Strategy {
     */
     void size();
 
-    /** \brief Runs the study mode of systemsDesign. First the performance profile for all systems is calculated.
-     * If the offtakes for the requirements mission have not been written yet and the config file specifies that the
-     * requirement mission should be calculated, the performance profile of all systems is calculated again for this
-     * mission. 
+    /** \brief Runs the study mode of systemsDesign. The performance profile in the study mission for all systems is calculated.
      * \attention System and accumulated masses and CofG are not determined in the study mode.
     */
     void study();
 
+    /** \brief Runs the requirements mission mode of systemsDesign. The performance profiles in the requirments mission for all
+     * systems are calculated.
+     * \attention System and accumulated masses and CofG are not determined in the requirments mission mode.
+    */
+    void requirements_mission();
+
     /** \brief Calls the specific implementation of the checkUserInput()-function of the aircraft systems ATA-29,
      * ATA-24, and ATA-27. These functions check user input from the configuration file.
      * \return void
diff --git a/systems_design/src/systemsIOData.cpp b/systems_design/src/systemsIOData.cpp
index bbad4a8fa15c5f91884e6bda9460bdf2c79dc3c9..1866cc89f2880f9e65dfc5be5f2b911a62a2913a 100644
--- a/systems_design/src/systemsIOData.cpp
+++ b/systems_design/src/systemsIOData.cpp
@@ -16,7 +16,6 @@
 */
 #include <string>
 #include <memory>
-#include <utility>
 #include <unitConversion/unitConversion.h>
 #include <algorithm>
 #include "systemsIOData.h"
@@ -50,7 +49,7 @@ std::string systemsIOData::getMissionFile(std::string mission_data_dir) {
     std::string missionFile;
     if (configuration.reqMission) {
         missionType = "Requirement Mission";
-        missionFile = EndnodeReadOnly<std::string>(xmlPath + "requirement_mission_file").read(rtIO_.acxml).value();
+        missionFile = EndnodeReadOnly<std::string>(xmlPath + "requirements_mission_file").read(rtIO_.acxml).value();
     } else {
         if (configuration.designCase) {
             missionType = "Design Mission";
@@ -190,9 +189,9 @@ void systemsIOData::readLandingGears(const node& geometry) {
 }
 
 void systemsIOData::updateMissionXML(std::string mission_data_dir) {
-    myRuntimeInfo->out << "Write off-takes to mission file ..." << std::endl;
     std::string missionFile = getMissionFile(mission_data_dir);
     node& missionXML_tmp = aixml::openDocument(mission_data_dir + "/" + missionFile);
+    myRuntimeInfo->out << "Write off-takes to mission file (" << missionFile << ") ..." << std::endl;
     std::vector<missionLoads> bleedOffTakes;
     std::vector<missionLoads> shaftOffTakes;
     int ATA70 = Systems.getSpecificSystem("ATA-70");
@@ -330,7 +329,7 @@ void systemsIOData::updateMissionXML(std::string mission_data_dir) {
             time.update(missionXML_tmp);
         }
     }
-    if (!configuration.reqMission) {
+    if (configuration.designCase) {
         //Determination of average power consumption
         if (numberCruiseStepsForAvgOfftakes > 0) {
             // Arithmetic mean of offtakes
@@ -522,19 +521,16 @@ void systemsIOData::readAccomodation(const node& acxml) {
                 //loop through all payload decks of the tube
                 std::string path_to_payload_deck = path_to_payload_tube + "/payload_deck@" + num2Str(k);
                 std::string name_payload_deck = acxml.at(path_to_payload_deck + "/name/value");
-                if (name_payload_deck == "passenger_deck") {
+                std::string first_word = name_payload_deck.substr(0, name_payload_deck.find('_'));
+                if (first_word == "passenger") {
                     data.Accommodation.cabinVolume.push_back(EndnodeReadOnly<double>(path_to_payload_deck + "/payload_deck_water_volume").read(acxml).value());
                     data.Accommodation.cabinVolumeTotal += data.Accommodation.cabinVolume.back();
                     data.Accommodation.lengthDeck.push_back(EndnodeReadOnly<double>(path_to_payload_deck + "/payload_deck_length").read(acxml).value());
-                    data.Accommodation.areaDeck.push_back(EndnodeReadOnly<double>(path_to_payload_deck + "/payload_deck_area").read(acxml).value());
-                    data.Accommodation.cabinDeckAreaTotal += data.Accommodation.areaDeck.back();
                     double numberWindows = 2. * 15. / 11.4 * data.Accommodation.lengthDeck.back();
                     data.Accommodation.numberWindows += round(numberWindows);
                     /* galleys */
                     data.Accommodation.galleyPower += EndnodeReadOnly<double>(path_to_payload_deck + "/payload_deck_required_galley_power").read(acxml).value();
-                } else if (name_payload_deck == "cargo_deck") {
-                    data.Accommodation.cargoArea.push_back(EndnodeReadOnly<double>(path_to_payload_deck + "/payload_deck_area").read(acxml).value());
-                    data.Accommodation.cargoAreaTotal += data.Accommodation.cargoArea.back();
+                } else if (first_word == "cargo") {
                     data.Accommodation.cargoVolume.push_back(EndnodeReadOnly<double>(path_to_payload_deck + "/payload_deck_water_volume").read(acxml).value());
                     data.Accommodation.cargoVolumeTotal += data.Accommodation.cargoVolume.back();
                 } else {
diff --git a/systems_design/systems_design_conf.xml b/systems_design/systems_design_conf.xml
index 3ef9993b44a54356bb16ec9c7515eec2729ab6f6..711f4c87dfcd18fe5fc9657b9af4d71c1da53437 100644
--- a/systems_design/systems_design_conf.xml
+++ b/systems_design/systems_design_conf.xml
@@ -47,18 +47,14 @@
 		</gnuplot_path>
     </control_settings>
 	<program_settings>
-	    <modes description="mode selection, only STANDARD available currently">
+	    <modes description="Mode selection, only STANDARD available currently. Selector: STANDARD">
 		    <value>STANDARD</value>
 			<default>STANDARD</default>
 		</modes>
-		<design_case description="Switch for system sizing. true (Sizing) / false (ONLY determination of a load profile for a specific mission)">
-			<value>true</value>
-			<default>true</default>
-		</design_case>
-		<offtakes_for_requirement_mission description="Determination of Offtakes for Requirement Mission">
-			<value>0</value>
-			<default>0</default>
-		</offtakes_for_requirement_mission>
+		<mission_mode description="Mission file that will be used for calculation. When the design mission is selected, the systems are sized and their masses calculated. Otherwise only the power required by the systems is calculated. Selector: design / study / requirement">
+		    <value>requirement</value>
+			<default>design</default>
+		</mission_mode>
 		<scaling_factors description="Variable scaling factors to change the calculated masses">
 			<systems description="Systems: 1 = full calculated mass. Should not be 0 otherwise system masses are multiplied with 0.">
 				<value>0.876</value>