From 5cfdece7d5a50cfa9f886ce77e18da0db3b1a191 Mon Sep 17 00:00:00 2001
From: sroscher <s.roscher@tu-berlin.de>
Date: Wed, 5 Feb 2025 17:26:45 +0100
Subject: [PATCH 1/2] - Made some formatting bug fixes

---
 .../sizing/fuselage_design/design_method.md   | 178 ++++++++++--------
 .../sizing/fuselage_design/getting_started.md |   7 +
 .../sizing/fuselage_design/index.md           |   2 +
 .../fuselage_design/run_your_first_design.md  |  14 +-
 4 files changed, 112 insertions(+), 89 deletions(-)

diff --git a/docs/documentation/sizing/fuselage_design/design_method.md b/docs/documentation/sizing/fuselage_design/design_method.md
index fdd1ec8..30897dc 100644
--- a/docs/documentation/sizing/fuselage_design/design_method.md
+++ b/docs/documentation/sizing/fuselage_design/design_method.md
@@ -13,75 +13,78 @@
 The cabin width is estimated using the given class definition.
 
 #### Determine width of seat row per aircraft side
-The width of one seat row/bench $w_{seat\_bench}$ (in inch) can be determined for the left and right side of the aircraft using the following equation:
-$
-    w_{seat\_bench} = n_{seats} \cdot w_{seat} + 2 \cdot w_{armrest}
-$
+The width of one seat row/bench $w_{\text{bench}}$ (in inch) can be determined for the left and right side of the aircraft using the following equation:
+$$
+    w_{\text{bench}} = n_{\text{seats}} \cdot w_{\text{seat}} + 2 \cdot w_{\text{armrest}}
+$$
 
 In which
-- $n_{seats}$ - number of seats per seat bench
-- $w_{seat}$ - seat width (taken from lowest class seat)
-- $w_{armrest}$ - armrest width (taken from lowest class seat)
+
+- $n_{\text{seats}}$ - number of seats per seat bench
+- $w_{\text{seat}}$ - seat width (taken from lowest class seat)
+- $w_{\text{armrest}}$ - armrest width (taken from lowest class seat)
 
 #### Calculate cabin width
-The cabin width $w_{cabin}$ (in inch) can then be calculated:
-$
-    w_{cabin} = w_{aisle} + w_{seat\_bench\_left} + w_{seat\_bench\_right} + 2 \cdot w_{seat\_space}
-$
+The cabin width $w_{\text{cabin}}$ (in inch) can then be calculated:
+$$
+    w_{\text{cabin}} = w_{\text{aisle}} + w_{\text{bench,left}} + w_{\text{bench,right}} + 2 \cdot w_{\text{seat space}}
+$$
 
 In which
-- $w_{aisle}$ - passenger aisle width
-- $w_{seat\_space}$ - lowest class seat space
 
-In case of a **wide-body aircraft configuration** there is an additional row in the middle of the aircraft as well as an additional passenger aisle. The width of the seat bench $w_{seat\_bench\_center}$ can be calculated using an equation similar to that in the previous section.
-$
-    w_{seat\_bench\_center} = n_{seats} \cdot w_{seat} + 2 \cdot w_{armrest\_outer} + (n_{seats} - 1) \cdot w_{armrest\_inner}
-$
+- $w_{\text{aisle}}$ - passenger aisle width
+- $w_{\text{seat space}}$ - lowest class seat space
+
+In case of a **wide-body aircraft configuration** there is an additional row in the middle of the aircraft as well as an additional passenger aisle. The width of the seat bench $w_{\text{bench,center}}$ can be calculated using an equation similar to that in the previous section.
+$$
+    w_{\text{bench,center}} = n_{\text{seats}} \cdot w_{\text{seat}} + 2 \cdot w_{\text{armrest,outer}} + (n_{\text{seats}} - 1) \cdot w_{\text{armrest,inner}}
+$$
 
 In which
-- $w_{seat}$ - seat width (from lowest class seat parameters of right side)
-- $w_{armrest\_outer}$ - width of outer armrest (from lowest class seat parameters of right side)
-- $w_{armrest\_inner}$ - width of inner armrest (from lowest class seat parameters of right side)
+
+- $w_{\text{seat}}$ - seat width (from lowest class seat parameters of right side)
+- $w_{\text{armrest,outer}}$ - width of outer armrest (from lowest class seat parameters of right side)
+- $w_{\text{armrest,inner}}$ - width of inner armrest (from lowest class seat parameters of right side)
 
 The equation for the cabin width estimation must be adapted accordingly:
-$
-    w_{cabin} = w_{aisle} + w_{seat\_bench\_left} + w_{seat\_bench\_right} + 2 \cdot w_{seat\_space} + w_{aisle} + w_{seat\_bench\_center}
-$
+$$
+    w_{\text{cabin}} = w_{\text{aisle}} + w_{\text{bench,left}} + w_{\text{bench,right}} + 2 \cdot w_{\text{seat space}} + w_{\text{aisle}} + w_{\text{bench,center}}
+$$
 
 ### Cabin slenderness ratio <sup>[1]</sup>
-The cabin slenderness ratio describes the ratio of cabin width to cabin length $\frac{w_{cabin}}{l_{cabin}}$.
-Whilst the cabin width is already known, the cabin length can be determined using the following equation:
-$
-    l_{cabin} = \frac{n_{PAX\_per\_class}}{ab} \cdot \left[ sp + \frac{a_{service}}{w_{seat}} + \frac{a_{bulk}}{\frac{w_{aisle}}{ab} + w_{seat}} + x \cdot w_{exit} \cdot \left( \frac{ab}{n_{PAX\_per\_class}} + \frac{sp}{d_{exits}} \right)  \right]
-$
+The cabin slenderness ratio describes the ratio of cabin width to cabin length and can be determined using the following equation:
+$$
+    \frac{w_{\text{cabin}}}{l_{\text{cabin}}} = \frac{n_{\text{PAX per class}}}{ab} \cdot \left[ sp + \frac{a_{\text{service}}}{w_{\text{seat}}} + \frac{a_{\text{bulk}}}{\frac{w_{\text{aisle}}}{ab} + w_{\text{seat}}} + x \cdot w_{\text{exit}} \cdot \left( \frac{ab}{n_{\text{PAX per class}}} + \frac{sp}{d_{\text{exits}}} \right)  \right]
+$$
 
 In which
+
 - $x$ - factor (1 for single-aisle, 2 for wide-body)
-- $n_{PAX\_per\_class}$ - number of PAX per class
+- $n_{\text{PAX per class}}$ - number of PAX per class
 - $ab$ - seat abreast
 - $sp$ - seat pitch
-- $a_{service}$ - service area per PAX
-- $a_{bulk}$ - bulk area per PAX
-- $w_{exit}$ - exit width
-- $d_{exits}$ - maximum distance between two exits
+- $a_{\text{service}}$ - service area per PAX
+- $a_{\text{bulk}}$ - bulk area per PAX
+- $w_{\text{exit}}$ - exit width
+- $d_{\text{exits}}$ - maximum distance between two exits
 
 ### Cabin length
 Knowing the cabin width and the cabin slenderness ratio, the cabin length (in inch) can be calculated:
-$
-    l_{cabin} = \frac{w_{cabin}}{\frac{w_{cabin}}{l_{cabin}}}
-$
+$$
+    l_{\text{cabin}} = \frac{w_{\text{cabin}}}{\frac{w_{\text{cabin}}}{l_{\text{cabin}}}}
+$$
 
 ### Cabin wall thickness
 The cabin wall thickness can be estimated using the following calculation:
-$
-    t_{wall} = 0.02 \cdot w_{cabin} + 2.5"
-$
+$$
+    t_{\text{wall}} = 0.02 \cdot w_{\text{cabin}} + 2.5"
+$$
 
 ### Cabin floor thickness
 With the use of the cabin wall thickness, the cabin floor thickness can be calculated:
-$
-    t_{floor} = 1.5 \cdot t_{wall}
-$
+$$
+    t_{\text{floor}} = 1.5 \cdot t_{\text{wall}}
+$$
 
 ## Determine fuselage geometry {#fuselage-geometry}
 With the calculated cabin the fuselage dimensions can be estimated.
@@ -90,85 +93,92 @@ With the calculated cabin the fuselage dimensions can be estimated.
 The fuselage length can be determined via regression formulas using the cabin length (in meter).
 
 For single-aisle aircraft:
-$
-    l_{fuselage} = \frac{l_{cabin}}{0.23482756 \cdot \log l_{cabin} - 0.05106017}
-$
+$$
+    l_{\text{fuselage}} = \frac{l_{\text{cabin}}}{0.23482756 \cdot \log l_{\text{cabin}} - 0.05106017}
+$$
 
 For wide-body aircraft:
-$
-    l_{fuselage} = \frac{l_{cabin}}{0.1735 \cdot \log l_{cabin} - 0.0966}
-$
+$$
+    l_{\text{fuselage}} = \frac{l_{\text{cabin}}}{0.1735 \cdot \log l_{\text{cabin}} - 0.0966}
+$$
 
 ### Fuselage diameters
 The fuselage does not necessarily have a circular cross-section. It is more common to design elliptical cross-sections. Because of that, there are several values that must be determined:
+
 - Fuselage diameter in y-direction
 - Fuselage diameter in negative z-direction
 - Fuselage diameter in positive z-direction
 
 #### Fuselage diameter in y-direction
-The fuselage diameter in y-direction $d_{fuselage\_y}$ can be calculated in the following way:
-$
-    d_{fuselage\_y} = w_{cabin} + 2 \cdot t_{wall}
-$
+The fuselage diameter in y-direction $d_{\text{fuselage,y}}$ can be calculated in the following way:
+$$
+    d_{\text{fuselage,y}} = w_{\text{cabin}} + 2 \cdot t_{\text{wall}}
+$$
 
 #### Fuselage diameter in negative z-direction
-The fuselage diameter in negative z-direction $d_{fuselage\_z\_neg}$ is determined by the cargo accommodation. It can be calculated in the following way.
+The fuselage diameter in negative z-direction $d_{\text{fuselage,z,neg}}$ is determined by the cargo accommodation. It can be calculated in the following way.
+
 At first, the distance to the cargo bottom is calculated:
-$
-    d_{to\_cargo\_bottom} = h_{max} + t_{floor} + d_{container\_to\_ceil} + o_{cabin\_floor}
-$
+$$
+    d_{\text{to cargo bottom}} = h_{\text{ULD,max}} + t_{\text{floor}} + d_{\text{container to ceil}} + o_{\text{cabin floor}}
+$$
 
 In which
-- $h_{max}$ - maximum height of unit load device
-- $d_{container\_to\_ceil}$ - distance from the container to the ceiling
-- $o_{cabin\_floor}$ - offset cabin floor
+
+- $h_{\text{ULD,max}}$ - maximum height of unit load device
+- $t_{\text{floor}}$ - floor thickness
+- $d_{\text{container to ceil}}$ - distance from the container to the ceiling
+- $o_{\text{cabin floor}}$ - offset cabin floor
 
 Afterwards, the distance to the lower compartment edge is estimated:
-$
-    d_{to\_lower\_compartment\_edge} = d_{container\_to\_wall} + 0.5 \cdot w_{max\_at\_base}
-$
+$$
+    d_{\text{to lower compartment edge}} = d_{\text{container to wall}} + 0.5 \cdot w_{\text{base,max}}
+$$
 In which
-- $d_{container\_to\_wall}$ - distance from container to wall
-- $w_{max\_at\_base}$ - maximum width at container base
+- $d_{\text{container to wall}}$ - distance from container to wall
+- $w_{\text{base,max}}$ - maximum width at container base
 
 Based on the Pythagorean theorem, the inner fuselage diameter (that equals the hypotenuse) can be calculated:
-$
-    d_{inner\_fuselage\_z\_neg} = \sqrt{(d_{to\_cargo\_bottom})^2 + (d_{to\_lower\_compartment\_edge})^2}
-$
+$$
+    d_{\text{fuselage,z,neg,inner}} = \sqrt{(d_{\text{to cargo bottom}})^2 + (d_{\text{to lower compartment edge}})^2}
+$$
 
 Adding the wall thickness results in the fuselage diameter in negative z-direction:
-$
-    d_{fuselage\_z\_neg} = d_{inner\_fuselage\_z\_neg} + t_{wall}
-$
+$$
+    d_{\text{fuselage,z,neg}} = d_{\text{fuselage,z,neg,inner}} + t_{\text{wall}}
+$$
 
 #### Fuselage diameter in positive z-direction
-The fuselage diameter in positive z-direction $d_{fuselage\_z\_pos}$ is determined by the passenger accommodation. It can be calculated in the following way.
+The fuselage diameter in positive z-direction $d_{\text{fuselage,z,pos}}$ is determined by the passenger accommodation. It can be calculated in the following way.
+
 Firstly, the inner fuselage height (equals outer cabin height) can be determined:
-$
-    d_{inner\_fuselage\_z\_pos} = h_{aisle\_standing} - o_{cabin\_floor} + h_{system\_bay}
-$
+$$
+    d_{\text{fuselage,z,pos,inner}} = h_{\text{aisle,standing}} - o_{\text{cabin floor}} + h_{\text{system bay}}
+$$
 
 In which
-- $h_{aisle\_standing}$ - passenger aisle standing height
-- $o_{cabin\_floor}$ - cabin floor offset
-- $h_{system\_bay}$ - system bay height above cabin
+
+- $h_{\text{aisle,standing}}$ - passenger aisle standing height
+- $o_{\text{cabin floor}}$ - cabin floor offset
+- $h_{\text{system bay}}$ - system bay height above cabin
 
 Adding the wall thickness leads to the fuselage diameter in positive z-direction.
-$
-    d_{fuselage\_z\_pos} = d_{inner\_fuselage\_z\_pos} + t_{wall}
-$
+$$
+    d_{\text{fuselage,z,pos}} = d_{\text{fuselage,z,pos,inner}} + t_{\text{wall}}
+$$
 
 ### Fuselage height
 The total height of the fuselage can be determined by summing up the fuselage diameters in positive and negative z-direction:
-$
-    h_{fuselage} = d_{fuselage\_z\_pos} + d_{fuselage\_z\_neg}
-$
+$$
+    h_{\text{fuselage}} = d_{\text{fuselage,z,pos}} + d_{\text{fuselage,z,neg}}
+$$
 
 !!! note 
     If the `force_circle_cross_section` mode is selected, fuselage height and width are set to the maximum of both.
 
 ## Mass estimation {#mass-estimation}
 The following masses are estimated:
+
 - Fuselage structure
 - Operator items
 - Furnishing
@@ -181,8 +191,10 @@ Please refer to _Synthesis of Subsonic Airplane Design_ by E. Torenbeek<sup>[3]<
 
 ## Generate fuselage shape {#generate-shape}
 The fuselage shape is generated using the calculated data and the reference ellipses (see the [getting started](getting_started.md) page for more information). The final geometry is written to the `fuselage_design_ellipses.json` file.
+
 The aircraft is divided into three sections: A cockpit section, followed by a constant section, and the tail section. 
 The steps of the shape generation are basically the same for all aircraft sections:
+
 1. Calculate the section length as a percentage of the fuselage length<sup>*</sup>.
 2. Proportionally adjust the given reference geometry to match the actual geometry using scaling factors. Therefore, separate scaling factors are calculated for
     - the x-direction (lengthwise),
diff --git a/docs/documentation/sizing/fuselage_design/getting_started.md b/docs/documentation/sizing/fuselage_design/getting_started.md
index 7973557..e4c0f0a 100644
--- a/docs/documentation/sizing/fuselage_design/getting_started.md
+++ b/docs/documentation/sizing/fuselage_design/getting_started.md
@@ -11,6 +11,7 @@ This section will guide you through the necessary steps to get the _fuselage\_de
     It is assumed that you have the `UNICADO package` installed including the executables and UNICADO libraries.
 
 Generally, we use two files to set or configure modules in UNICADO:
+
 - The aircraft exchange file (or _acXML_) includes
     - data related inputs (e.g., configuration type) and
     - data related outputs (e.g., component design data).
@@ -42,6 +43,7 @@ _fuselage\_design_ can be single executed without the execution of any other mod
 - ... -->
 
 The following data should be available in the _acXML_ (2. and 3. are optional):
+
 1. Requirements and specifications
     - Design specification
         - Configuration information
@@ -82,6 +84,7 @@ The following data should be available in the _acXML_ (2. and 3. are optional):
 The _configXML_ is structured into two blocks: the control and program settings.
 
 The control settings are standardized in UNICADO and will not be described in detail here. But to get started, you have to change at least
+
 - the `aircraft_exchange_file_name` and `aircraft_exchange_file_directory` to your respective settings,
 - the `console_output` at least to `mode_1`, and
 - the `plot_output` to false (or define `inkscape_path` and `gnuplot_path`).
@@ -193,13 +196,16 @@ The fuselage design library contains files that are necessary to generate a vali
 #### Reference ellipses
 The reference aircraft ellipses are used to create the outer shape of the aircraft.
 There are reference ellipses for the following sections:
+
 - Cockpit section
 - Constant section
 - Tail sections
+
 Furthermore, there is data for the reference diameter and information on scaling factors.
 
 #### Accommodation definitions
 The `accommodation_definitions.xml` file contains information on the passenger and cargo definition for the following categories:
+
 - Cabin interior such as seats, galleys, trolleys, lavatories, and wardrobes as well as respective masses
 - Cargo accommodation such as containers or pallets
 - Emergency slides
@@ -207,6 +213,7 @@ The `accommodation_definitions.xml` file contains information on the passenger a
 
 #### Fuselage design certification requirements
 The `fuselage_design_cs_requirements.xml` file contains necessary design requirements regarding the following topics:
+
 - Emergency exit definition and positioning (according to CS-25.807ff)
 - Cabin design specifications such as the aisle dimensions and cross aisle overlaps (according to CS-25.807ff)
 - Container arrangement
diff --git a/docs/documentation/sizing/fuselage_design/index.md b/docs/documentation/sizing/fuselage_design/index.md
index 4fee3ec..b470af3 100644
--- a/docs/documentation/sizing/fuselage_design/index.md
+++ b/docs/documentation/sizing/fuselage_design/index.md
@@ -15,10 +15,12 @@ Blended-wing-body |...               |...        |...        |under development
 ## A user's guide to fuselage design
 The _fuselage\_design_ tool is your key to designing the aircraft's fuselage. In this user documentation, you’ll find all the information you need to understand the tool, as well as the necessary inputs and configurations to run a fuselage design from the ground up.
 The following sections will walk you through the process:
+
 - [Getting started](getting_started.md)
 - [Run your first fuselage design](run_your_first_design.md)
 
 For a comprehensive understanding of the tool’s functionality, the documentation is structured into two distinct sections:
+
 - A [method description](design_method.md) and
 - a [software architecture](software_architecture.md)
 section.
diff --git a/docs/documentation/sizing/fuselage_design/run_your_first_design.md b/docs/documentation/sizing/fuselage_design/run_your_first_design.md
index 4e69db7..dd48fd4 100644
--- a/docs/documentation/sizing/fuselage_design/run_your_first_design.md
+++ b/docs/documentation/sizing/fuselage_design/run_your_first_design.md
@@ -3,6 +3,7 @@ Let's dive into the fun part and design a fuselage!
 
 ## Tool single execution
 The tool can be executed from the console directly if all paths are set. The following will happen:
+
 - [Console output](#console-output)
 - [Generation of reports and plots](#reporting)
 - [Writing output to aircraft exchange file](#acxml)
@@ -50,9 +51,10 @@ Finally, you receive information about the reports and plots created (depending
 
 ### Reporting {#reporting}
 In the following, a short overview is given on the generated reports:
+
 - A `fuselage_design.log` file is written within the directory of the executable
 - Depending on your settings, the following output is generated and saved in the `reporting` folder, located in the directory of the aircraft exchange file:
-    - an HTML report in the `report_html` folder (not implemented yet)
+    - an HTML report in the `report_html` folder
     - a TeX report in the `report_tex` folder (not implemented yet)
     - an XML file with additional output data in the `report_xml` folder
     - plots in the `plots` folder
@@ -67,16 +69,14 @@ Aircraft exchange file
 |- Component design
 |  |- Fuselage
 |  |  |- Position*
-|  |  |- Mass properties
-|  |  |  |- ...
+|  |  |- Mass properties**
 |  |  |- Specific
 |  |  |  |- Geometry
 |  |  |  |  |- Fuselage (ID="0")
 |  |  |  |  |  |- Name
 |  |  |  |  |  |- Position*
 |  |  |  |  |  |- Direction*
-|  |  |  |  |  |- Mass properties
-|  |  |  |  |  |  |- ...
+|  |  |  |  |  |- Mass properties**
 |  |  |  |  |  |- Sections
 |  |  |  |  |  |  |- Section (ID="0")
 |  |  |  |  |  |  |  |- Name
@@ -134,7 +134,9 @@ Aircraft exchange file
 |  |  |  |  |  |  |  |  |  |- Payload deck required galley power 
 ```
 
-<sup>*</sup> Node contains the following sub-nodes: x, y, z
+<sup>*</sup> Node has been shortened. It contains the following sub-nodes: x, y, z
+
+<sup>*</sup> Node has been shortened. It contains sub-nodes with information on the mass, inertia, and center of gravity.
 
 ### Write geometry data to .json file {#geometry-data}
 The calculated geometry data is written to the `fuselage_design_ellipses.json` file and can then be used if the `use_existing_geometry` flag is set to `true`.
-- 
GitLab


From 02e15a183bf2541c0d8d1b8727823912216d7e01 Mon Sep 17 00:00:00 2001
From: AndiGob <andreas.gobbbin@hotmail.de>
Date: Thu, 6 Feb 2025 12:15:10 +0100
Subject: [PATCH 2/2] fuselage_design: - update some minor typos and changes

---
 docs/documentation/sizing/fuselage_design/design_method.md   | 2 +-
 docs/documentation/sizing/fuselage_design/getting_started.md | 5 +++++
 .../sizing/fuselage_design/run_your_first_design.md          | 2 +-
 3 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/docs/documentation/sizing/fuselage_design/design_method.md b/docs/documentation/sizing/fuselage_design/design_method.md
index 30897dc..045b78e 100644
--- a/docs/documentation/sizing/fuselage_design/design_method.md
+++ b/docs/documentation/sizing/fuselage_design/design_method.md
@@ -186,7 +186,7 @@ The following masses are estimated:
 Please refer to _Synthesis of Subsonic Airplane Design_ by E. Torenbeek<sup>[3]</sup> and the Certification Specifications<sup>[4]</sup> for further information.
 
 !!! note 
-    All masses are estimated in accordance with the CPACS standard.
+    All masses are estimated in accordance with the CPACS mass standard.
 <!-- ## Estimate positions and COG -->
 
 ## Generate fuselage shape {#generate-shape}
diff --git a/docs/documentation/sizing/fuselage_design/getting_started.md b/docs/documentation/sizing/fuselage_design/getting_started.md
index e4c0f0a..ce1373f 100644
--- a/docs/documentation/sizing/fuselage_design/getting_started.md
+++ b/docs/documentation/sizing/fuselage_design/getting_started.md
@@ -96,6 +96,10 @@ The program settings are structured like this (descriptions can be found in the
 
 ```plaintext
 Program Settings
+|- Program mode
+|  | - Setting use existing geometry
+|  |  | - Path to existing geometry_file
+|  |  | - Use as starting point
 |- Configuration (ID="tube_and_wing")
 |  |- Fidelity name
 |  |- Method name
@@ -182,6 +186,7 @@ Program Settings
 |  |  |  |  |  |  |  |  |  |- Specific number of class lavatories
 |  |  |  |  |  |  |  |- Wardrobe
 |  |  |  |  |  |  |  |  |- Use wardrobe for passenger class
+|  |  |  |  |  |  |  |  |  | - Space per passenger
 |  |  |  |  |- Passenger aisle
 |  |  |  |  |  |- Width
 |  |  |  |  |  |- Standing height
diff --git a/docs/documentation/sizing/fuselage_design/run_your_first_design.md b/docs/documentation/sizing/fuselage_design/run_your_first_design.md
index dd48fd4..f29d05b 100644
--- a/docs/documentation/sizing/fuselage_design/run_your_first_design.md
+++ b/docs/documentation/sizing/fuselage_design/run_your_first_design.md
@@ -12,7 +12,7 @@ The tool can be executed from the console directly if all paths are set. The fol
 Some of the above mentioned steps did not work? Check out the [troubleshooting](#troubleshooting) section for advices.
 Also, if you need some additional information on the underlying methodology, check out the page on the [fuselage design method](design_method.md).
 
-So, feel free to open the terminal and run `fuselage_design.exe` to see what happens...
+So, feel free to open the terminal and run `python.exe fuselage_design.py` to see what happens...
 
 ### Console output {#console-output}
 Firstly, you see output in the console window. Let's go through it step by step...
-- 
GitLab