Repository: DiamondLightSource/httomo (language: python)

Issue:
Auto generator of yamls for backends during documentation build
- Mostly changing GA recipe to accommodate auto generation of yaml templates during the build of documentation. 
- So far `yaml_templates` folder contains yamls but they are not used in the GA build. They are required mostly for yaml checker AFAIAA, see more in  #299



Discussion / hints:

Fix patch:
diff --git a/.github/workflows/doc_conda.yml b/.github/workflows/doc_conda.yml
index ba4401298..6c013f2bd 100644
--- a/.github/workflows/doc_conda.yml
+++ b/.github/workflows/doc_conda.yml
@@ -24,16 +24,23 @@ jobs:
           with:
             python-version: 3.9
 
-        - name: httomo
+        - name: httomo-docs
           uses: conda-incubator/setup-miniconda@v2
           with:
             auto-update-conda: false
-            activate-environment: httomo
+            activate-environment: httomo-docs
             environment-file: ./docs/source/doc-conda-requirements.yml
 
         - name: Build api docs
           run: sphinx-apidoc -feT -t=./docs/source/_templates -o ./docs/source/api ./httomo
 
+        - name: Generate yaml templates
+          run: |
+            python ./httomo/yaml_templates_generator.py -i ./httomo/methods_database/packages/external/tomopy/tomopy_modules.yaml -o ./docs/build/yaml_templates/tomopy
+            python ./httomo/yaml_unsupported_tomopy_remove.py -t ./docs/build/yaml_templates/tomopy -l ./httomo/methods_database/packages/external/tomopy/tomopy.yaml
+            python ./httomo/yaml_templates_generator.py -i ./httomo/methods_database/packages/external/httomolib/httomolib_modules.yaml -o ./docs/build/yaml_templates/httomolib
+            python ./httomo/yaml_templates_generator.py -i ./httomo/methods_database/packages/external/httomolibgpu/httomolibgpu_modules.yaml -o ./docs/build/yaml_templates/httomolibgpu
+
         - name: Generate yml docs
           run: python ./docs/source/yaml_doc_generator.py
 
diff --git a/.gitignore b/.gitignore
index 53717ba40..0e5c67a38 100644
--- a/.gitignore
+++ b/.gitignore
@@ -46,3 +46,5 @@ cov.xml
 .mypy_cache/
 output_dir/
 temp.yaml
+cufile.log
+
diff --git a/.readthedocs.yaml b/.readthedocs.yaml
deleted file mode 100644
index 20d4fbbbe..000000000
--- a/.readthedocs.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-# .readthedocs.yaml
-# Read the Docs configuration file
-# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
-
-version: 2
-sphinx:
-  configuration: docs/source/conf.py
-python:
-  version: 3.7
-  install:
-    - requirements: docs/source/doc-requirements.txt
diff --git a/README.rst b/README.rst
index e6a87d417..2e5aa9eae 100644
--- a/README.rst
+++ b/README.rst
@@ -5,54 +5,22 @@ HTTomo is a user interface (UI) written in Python for fast big data processing u
 It orchestrates I/O data operations and enables processing on a CPU and/or a GPU. HTTomo utilises other libraries, such as `TomoPy <https://tomopy.readthedocs.io>`_ and `HTTomolibgpu <https://github.com/DiamondLightSource/httomolibgpu>`_
 as backends for data processing. The methods from the libraries are exposed through YAML templates to enable fast task programming.
 
+Installation
+============
+See detailed instructions for `installation <https://diamondlightsource.github.io/httomo/howto/installation.html>`_ . 
+
 Documentation
 ==============
-Please check the full documentation `here <https://diamondlightsource.github.io/httomo/>`_.
-
-Install HTTomo as a pre-built conda Python package
-======================================================
-.. code-block:: console
-
-   $ conda env create --name httomo # create a fresh conda environment
-   $ conda install -c conda-forge -c https://conda.anaconda.org/httomo/ httomo
-
-Install as a Python module
-======================================================
-.. code-block:: console
-    
-   $ git clone git@github.com:DiamondLightSource/HTTomo.git # clone the repo
-   $ conda env create --name httomo --file conda/environment.yml # install dependencies
-   $ conda activate httomo # activate environment
-   $ pip install .[httomolib,tomopy] # Install the module + backend(s)
-
-Setup HTTomo development environment:
-======================================================
-.. code-block:: console
-
-   $ pip install -e .[dev] # development mode 
+Please check the full `documentation <https://diamondlightsource.github.io/httomo/>`_.
 
-Build HTTomo as a conda Python package
-======================================================
-.. code-block:: console
+Running HTTomo:
+================
 
-   $ conda build conda/recipe/ -c conda-forge -c https://conda.anaconda.org/httomo/ 
-
-Running the code:
-======================================================
-
-* Install the module as described in "Install as a Python module"
-* Execute the python module with :code:`python -m httomo <args>`
+* Install the module following any chosen `installation <https://diamondlightsource.github.io/httomo/howto/installation.html>`_ path.
 * For help with the command line interface, execute :code:`python -m httomo --help`
-
-An example of running the code with test data:
-==============================================
-
-* Create an output directory :code:`mkdir output_dir/`
-* Go to the home directory and run: :code:`python -m httomo run tests/test_data/tomo_standard.nxs samples/pipeline_template_examples/02_basic_cpu_pipeline_tomo_standard.yaml output_dir/`
-
-An example of running validation on a YAML pipeline file
-========================================================
-* :code:`python -m httomo check samples/pipeline_template_examples/02_basic_cpu_pipeline_tomo_standard.yaml`
+* Choose the existing `YAML pipeline <https://diamondlightsource.github.io/httomo/pipelines/yaml.html>`_ or build a new one using ready-to-be-used `templates <https://diamondlightsource.github.io/httomo/backends/templates.html>`_.
+* Optional: perform the validity check of the YAML pipeline file with the `YAML checker <https://diamondlightsource.github.io/httomo/utilities/yaml_checker.html>`_.
+* Run HTTomo with :code:`python -m httomo run [OPTIONS] IN_DATA_FILE YAML_CONFIG OUT_DIR`, see more on that `here <https://diamondlightsource.github.io/httomo/howto/run_httomo.html>`_.
 
 Release Tagging Scheme
 ======================
diff --git a/conda/environment.yml b/conda/environment.yml
index 64af7a48a..b71394829 100644
--- a/conda/environment.yml
+++ b/conda/environment.yml
@@ -22,6 +22,8 @@ dependencies:
   - conda-forge::tqdm
   - conda-forge::typing_extensions
   - anaconda::ipython
-  - conda-forge::tomopy
+  - conda-forge::tomopy==1.15
+  - httomo::httomolib==2.0
+  - httomo::httomolibgpu==2.0
   - httomo::tomobar
   - rapidsai::cucim
diff --git a/docs/source/_static/CoR.svg b/docs/source/_static/cor/CoR.svg
similarity index 100%
rename from docs/source/_static/CoR.svg
rename to docs/source/_static/cor/CoR.svg
diff --git a/docs/source/_static/log/log_screenshot.png b/docs/source/_static/log/log_screenshot.png
new file mode 100644
index 000000000..4799aeaba
Binary files /dev/null and b/docs/source/_static/log/log_screenshot.png differ
diff --git a/docs/source/_static/dims_prev.svg b/docs/source/_static/preview/dims_prev.svg
similarity index 100%
rename from docs/source/_static/dims_prev.svg
rename to docs/source/_static/preview/dims_prev.svg
diff --git a/docs/source/_static/dims_prevX.svg b/docs/source/_static/preview/dims_prevX.svg
similarity index 100%
rename from docs/source/_static/dims_prevX.svg
rename to docs/source/_static/preview/dims_prevX.svg
diff --git a/docs/source/_static/dims_prevY.svg b/docs/source/_static/preview/dims_prevY.svg
similarity index 100%
rename from docs/source/_static/dims_prevY.svg
rename to docs/source/_static/preview/dims_prevY.svg
diff --git a/docs/source/_static/sections/sections.svg b/docs/source/_static/sections/sections.svg
new file mode 100644
index 000000000..bd96955b4
--- /dev/null
+++ b/docs/source/_static/sections/sections.svg
@@ -0,0 +1,307 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="210mm"
+   height="297mm"
+   viewBox="0 0 210 297"
+   version="1.1"
+   id="svg5"
+   inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+   sodipodi:docname="sections.svg"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview7"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:document-units="mm"
+     showgrid="false"
+     inkscape:zoom="0.53165938"
+     inkscape:cx="205.95893"
+     inkscape:cy="536.99795"
+     inkscape:window-width="1850"
+     inkscape:window-height="1016"
+     inkscape:window-x="70"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer1" />
+  <defs
+     id="defs2">
+    <pattern
+       inkscape:collect="always"
+       xlink:href="#Strips1_3"
+       id="pattern130726"
+       patternTransform="matrix(10,0,0,10,1.5875,0)" />
+    <pattern
+       inkscape:collect="always"
+       patternUnits="userSpaceOnUse"
+       width="4"
+       height="1"
+       patternTransform="translate(0,0) scale(10,10)"
+       id="Strips1_3"
+       inkscape:stockid="Stripes 1:3"
+       inkscape:isstock="true">
+      <rect
+         style="fill:black;stroke:none"
+         x="0"
+         y="-0.5"
+         width="1"
+         height="2"
+         id="rect3717" />
+    </pattern>
+    <linearGradient
+       id="linearGradient72471"
+       inkscape:swatch="solid">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop72469" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4681"
+       inkscape:swatch="solid">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop4679" />
+    </linearGradient>
+    <marker
+       style="overflow:visible;"
+       id="Arrow1Lend"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lend"
+       inkscape:isstock="true">
+      <path
+         transform="scale(0.8) rotate(180) translate(12.5,0)"
+         style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt;"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path1880" />
+    </marker>
+  </defs>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="fill:url(#pattern130726);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00098;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect99"
+       width="180.93855"
+       height="28.235384"
+       x="15.260741"
+       y="83.726624"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/rect99.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+       d="m 22.709249,122.93593 162.310091,0.0803"
+       id="path1875"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/rect99.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:12.7px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="21.573326"
+       y="99.012802"
+       id="text8653"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/rect99.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651"
+         style="font-size:12.7px;baseline-shift:sub;stroke-width:0.264583"
+         x="21.573326"
+         y="99.012802">M<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan18704">1</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:12.7px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="99.183304"
+       y="99.012802"
+       id="text8653-6"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/rect99.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-2"
+         style="font-size:12.7px;baseline-shift:sub;stroke-width:0.264583"
+         x="99.183304"
+         y="99.012802">M<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan44813">3</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:12.7px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="59.58456"
+       y="99.012802"
+       id="text8653-3"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/rect99.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-6"
+         style="font-size:12.7px;baseline-shift:sub;stroke-width:0.264583"
+         x="59.58456"
+         y="99.012802">M<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan37723">2</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="42.682316"
+       y="98.819565"
+       id="text8653-3-0"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/rect99.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-6-6"
+         style="font-size:8.46667px;baseline-shift:sub;fill:#ffffff;stroke-width:0.264583"
+         x="42.682316"
+         y="98.819565">T<tspan
+   style="font-size:65%;baseline-shift:sub;fill:#ffffff"
+   id="tspan108722">1</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="82.140907"
+       y="98.819565"
+       id="text8653-3-0-6"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/rect99.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-6-6-1"
+         style="font-size:8.46667px;baseline-shift:sub;fill:#ffffff;stroke-width:0.264583"
+         x="82.140907"
+         y="98.819565">T<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan115798">2</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:12.7px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="176.26408"
+       y="99.012802"
+       id="text8653-3-9"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/rect99.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-6-3"
+         style="font-size:12.7px;baseline-shift:sub;stroke-width:0.264583"
+         x="176.26408"
+         y="99.012802">M<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan59405">5</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:12.7px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="138.78198"
+       y="99.012802"
+       id="text8653-1"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/rect99.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-27"
+         style="font-size:12.7px;baseline-shift:sub;stroke-width:0.264583"
+         x="138.78198"
+         y="99.012802">M<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan49456">4</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="122.21856"
+       y="98.819565"
+       id="text8653-3-0-7"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/rect99.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-6-6-9"
+         style="font-size:8.46667px;baseline-shift:sub;fill:#ffffff;stroke-width:0.264583"
+         x="122.21856"
+         y="98.819565">T<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan121245">3</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="162.45317"
+       y="98.819565"
+       id="text8653-3-0-0"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/rect99.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-6-6-2"
+         style="font-size:8.46667px;baseline-shift:sub;fill:#ffffff;stroke-width:0.264583"
+         x="162.45317"
+         y="98.819565">T<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan128606">4</tspan></tspan></text>
+    <rect
+       style="fill:#ffd5d5;fill-opacity:1;stroke:#000000;stroke-width:0.995944;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect130190"
+       width="10.791527"
+       height="28.235382"
+       x="4.4692154"
+       y="83.726624"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/rect99.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:12.7px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="6.1282878"
+       y="99.93029"
+       id="text8653-5"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/rect99.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-9"
+         style="font-size:12.7px;baseline-shift:sub;fill:#000000;stroke-width:0.264583"
+         x="6.1282878"
+         y="99.93029">L<tspan
+   style="font-size:65%;baseline-shift:sub;fill:#000000"
+   id="tspan18704-2" /></tspan></text>
+    <rect
+       style="fill:#ac9d93;fill-opacity:1;stroke:#000000;stroke-width:0.995944;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect130190-7"
+       width="10.791527"
+       height="28.235382"
+       x="196.19928"
+       y="83.726624"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/rect99.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="27.871626"
+       y="133.35529"
+       id="text136483"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/rect99.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan136481"
+         style="stroke-width:0.264583"
+         x="27.871626"
+         y="133.35529">pipeline execution direction</tspan></text>
+  </g>
+</svg>
diff --git a/docs/source/_static/sections/sections1.png b/docs/source/_static/sections/sections1.png
new file mode 100644
index 000000000..dfec17177
Binary files /dev/null and b/docs/source/_static/sections/sections1.png differ
diff --git a/docs/source/_static/sections/sections2.png b/docs/source/_static/sections/sections2.png
new file mode 100644
index 000000000..874a86e29
Binary files /dev/null and b/docs/source/_static/sections/sections2.png differ
diff --git a/docs/source/_static/sections/sections2.svg b/docs/source/_static/sections/sections2.svg
new file mode 100644
index 000000000..cc59ddb7c
--- /dev/null
+++ b/docs/source/_static/sections/sections2.svg
@@ -0,0 +1,356 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="210mm"
+   height="297mm"
+   viewBox="0 0 210 297"
+   version="1.1"
+   id="svg5"
+   inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+   sodipodi:docname="sections2.svg"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview7"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:document-units="mm"
+     showgrid="false"
+     inkscape:zoom="0.53165938"
+     inkscape:cx="205.95894"
+     inkscape:cy="536.99796"
+     inkscape:window-width="1850"
+     inkscape:window-height="1016"
+     inkscape:window-x="70"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer1" />
+  <defs
+     id="defs2">
+    <pattern
+       inkscape:collect="always"
+       xlink:href="#Strips1_3"
+       id="pattern130726"
+       patternTransform="matrix(10,0,0,10,1.5875,0)" />
+    <pattern
+       inkscape:collect="always"
+       patternUnits="userSpaceOnUse"
+       width="4"
+       height="1"
+       patternTransform="translate(0,0) scale(10,10)"
+       id="Strips1_3"
+       inkscape:stockid="Stripes 1:3"
+       inkscape:isstock="true">
+      <rect
+         style="fill:black;stroke:none"
+         x="0"
+         y="-0.5"
+         width="1"
+         height="2"
+         id="rect3717" />
+    </pattern>
+    <linearGradient
+       id="linearGradient72471"
+       inkscape:swatch="solid">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop72469" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4681"
+       inkscape:swatch="solid">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop4679" />
+    </linearGradient>
+    <marker
+       style="overflow:visible;"
+       id="Arrow1Lend"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lend"
+       inkscape:isstock="true">
+      <path
+         transform="scale(0.8) rotate(180) translate(12.5,0)"
+         style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt;"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path1880" />
+    </marker>
+  </defs>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="fill:#ffe6d5;stroke:#000000;stroke-width:0.6;stroke-miterlimit:4;stroke-dasharray:0.6,0.6;stroke-dashoffset:0"
+       id="rect894"
+       width="105.78652"
+       height="44.892738"
+       x="15.773057"
+       y="74.748642"
+       ry="7.7790279"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <rect
+       style="fill:#ffe6d5;stroke:#000000;stroke-width:0.6;stroke-miterlimit:4;stroke-dasharray:0.6, 0.6;stroke-dashoffset:0"
+       id="rect894-3"
+       width="63.415993"
+       height="44.776752"
+       x="131.91408"
+       y="74.806633"
+       ry="7.7589297"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <rect
+       style="fill:url(#pattern130726);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00098;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect99"
+       width="180.93855"
+       height="28.235384"
+       x="15.260741"
+       y="83.726624"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+       d="m 22.709249,122.93593 162.310091,0.0803"
+       id="path1875"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:12.7px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="21.573326"
+       y="99.012802"
+       id="text8653"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651"
+         style="font-size:12.7px;baseline-shift:sub;stroke-width:0.264583"
+         x="21.573326"
+         y="99.012802">M<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan18704">1</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:12.7px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="99.183304"
+       y="99.012802"
+       id="text8653-6"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-2"
+         style="font-size:12.7px;baseline-shift:sub;stroke-width:0.264583"
+         x="99.183304"
+         y="99.012802">M<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan44813">3</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:12.7px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="59.58456"
+       y="99.012802"
+       id="text8653-3"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-6"
+         style="font-size:12.7px;baseline-shift:sub;stroke-width:0.264583"
+         x="59.58456"
+         y="99.012802">M<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan37723">2</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="42.682316"
+       y="98.819565"
+       id="text8653-3-0"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-6-6"
+         style="font-size:8.46667px;baseline-shift:sub;fill:#ffffff;stroke-width:0.264583"
+         x="42.682316"
+         y="98.819565">T<tspan
+   style="font-size:65%;baseline-shift:sub;fill:#ffffff"
+   id="tspan108722">1</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="82.140907"
+       y="98.819565"
+       id="text8653-3-0-6"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-6-6-1"
+         style="font-size:8.46667px;baseline-shift:sub;fill:#ffffff;stroke-width:0.264583"
+         x="82.140907"
+         y="98.819565">T<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan115798">2</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:12.7px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="176.26408"
+       y="99.012802"
+       id="text8653-3-9"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-6-3"
+         style="font-size:12.7px;baseline-shift:sub;stroke-width:0.264583"
+         x="176.26408"
+         y="99.012802">M<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan59405">5</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:12.7px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="138.78198"
+       y="99.012802"
+       id="text8653-1"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-27"
+         style="font-size:12.7px;baseline-shift:sub;stroke-width:0.264583"
+         x="138.78198"
+         y="99.012802">M<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan49456">4</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="122.21856"
+       y="98.819565"
+       id="text8653-3-0-7"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-6-6-9"
+         style="font-size:8.46667px;baseline-shift:sub;fill:#ffffff;stroke-width:0.264583"
+         x="122.21856"
+         y="98.819565">T<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan121245">3</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="162.45317"
+       y="98.819565"
+       id="text8653-3-0-0"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-6-6-2"
+         style="font-size:8.46667px;baseline-shift:sub;fill:#ffffff;stroke-width:0.264583"
+         x="162.45317"
+         y="98.819565">T<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan128606">4</tspan></tspan></text>
+    <rect
+       style="fill:#ffd5d5;fill-opacity:1;stroke:#000000;stroke-width:0.995944;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect130190"
+       width="10.791527"
+       height="28.235382"
+       x="4.4692154"
+       y="83.726624"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:12.7px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="6.1282878"
+       y="99.93029"
+       id="text8653-5"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-9"
+         style="font-size:12.7px;baseline-shift:sub;fill:#000000;stroke-width:0.264583"
+         x="6.1282878"
+         y="99.93029">L<tspan
+   style="font-size:65%;baseline-shift:sub;fill:#000000"
+   id="tspan18704-2" /></tspan></text>
+    <rect
+       style="fill:#ac9d93;fill-opacity:1;stroke:#000000;stroke-width:0.995944;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect130190-7"
+       width="10.791527"
+       height="28.235382"
+       x="196.19928"
+       y="83.726624"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="27.871626"
+       y="133.35529"
+       id="text136483"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan136481"
+         style="stroke-width:0.264583"
+         x="27.871626"
+         y="133.35529">pipeline execution direction</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="47.558163"
+       y="81.173401"
+       id="text2672"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan2670"
+         style="font-size:6.35px;stroke-width:0.264583"
+         x="47.558163"
+         y="81.173401">section 1</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;white-space:pre;inline-size:34.8304;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="76.230034"
+       y="224.32175"
+       id="text2672-6"
+       transform="translate(72.461729,-143.14835)"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         x="76.230034"
+         y="224.32175"
+         id="tspan17653">section 2</tspan></text>
+  </g>
+</svg>
diff --git a/docs/source/_static/sections/sections3.png b/docs/source/_static/sections/sections3.png
new file mode 100644
index 000000000..c92d00783
Binary files /dev/null and b/docs/source/_static/sections/sections3.png differ
diff --git a/docs/source/_static/sections/sections3.svg b/docs/source/_static/sections/sections3.svg
new file mode 100644
index 000000000..28b168a13
--- /dev/null
+++ b/docs/source/_static/sections/sections3.svg
@@ -0,0 +1,384 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="210mm"
+   height="297mm"
+   viewBox="0 0 210 297"
+   version="1.1"
+   id="svg5"
+   inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+   sodipodi:docname="sections3.svg"
+   inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections2.png"
+   inkscape:export-xdpi="81"
+   inkscape:export-ydpi="81"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview7"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:document-units="mm"
+     showgrid="false"
+     inkscape:zoom="0.53165938"
+     inkscape:cx="205.95894"
+     inkscape:cy="536.99796"
+     inkscape:window-width="1850"
+     inkscape:window-height="1016"
+     inkscape:window-x="70"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer1" />
+  <defs
+     id="defs2">
+    <pattern
+       inkscape:collect="always"
+       xlink:href="#Strips1_3"
+       id="pattern130726"
+       patternTransform="matrix(10,0,0,10,1.5875,0)" />
+    <pattern
+       inkscape:collect="always"
+       patternUnits="userSpaceOnUse"
+       width="4"
+       height="1"
+       patternTransform="translate(0,0) scale(10,10)"
+       id="Strips1_3"
+       inkscape:stockid="Stripes 1:3"
+       inkscape:isstock="true">
+      <rect
+         style="fill:black;stroke:none"
+         x="0"
+         y="-0.5"
+         width="1"
+         height="2"
+         id="rect3717" />
+    </pattern>
+    <linearGradient
+       id="linearGradient72471"
+       inkscape:swatch="solid">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop72469" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4681"
+       inkscape:swatch="solid">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop4679" />
+    </linearGradient>
+    <marker
+       style="overflow:visible;"
+       id="Arrow1Lend"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lend"
+       inkscape:isstock="true">
+      <path
+         transform="scale(0.8) rotate(180) translate(12.5,0)"
+         style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt;"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path1880" />
+    </marker>
+  </defs>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="fill:#ffe6d5;stroke:#000000;stroke-width:0.6;stroke-miterlimit:4;stroke-dasharray:0.6,0.6;stroke-dashoffset:0"
+       id="rect894"
+       width="66.00145"
+       height="45.018196"
+       x="15.71034"
+       y="74.685913"
+       ry="7.8007674"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <rect
+       style="fill:#ffe6d5;stroke:#000000;stroke-width:0.6;stroke-miterlimit:4;stroke-dasharray:0.6,0.6;stroke-dashoffset:0"
+       id="rect894-5"
+       width="65.227608"
+       height="45.021702"
+       x="131.25441"
+       y="75.258194"
+       ry="7.8013749"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <rect
+       style="fill:#ffe6d5;stroke:#000000;stroke-width:0.6;stroke-miterlimit:4;stroke-dasharray:0.6,0.6;stroke-dashoffset:0"
+       id="rect894-3"
+       width="30.236732"
+       height="44.961605"
+       x="91.671768"
+       y="74.502304"
+       ry="7.7909613"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <rect
+       style="fill:url(#pattern130726);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00098;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect99"
+       width="180.93855"
+       height="28.235384"
+       x="15.260741"
+       y="83.726624"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+       d="m 22.709249,123.4651 162.310091,0.0803"
+       id="path1875"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:12.7px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="21.573326"
+       y="99.012802"
+       id="text8653"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651"
+         style="font-size:12.7px;baseline-shift:sub;stroke-width:0.264583"
+         x="21.573326"
+         y="99.012802">M<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan18704">1</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:12.7px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="99.183304"
+       y="99.012802"
+       id="text8653-6"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-2"
+         style="font-size:12.7px;baseline-shift:sub;stroke-width:0.264583"
+         x="99.183304"
+         y="99.012802">M<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan44813">3</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:12.7px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="59.58456"
+       y="99.012802"
+       id="text8653-3"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-6"
+         style="font-size:12.7px;baseline-shift:sub;stroke-width:0.264583"
+         x="59.58456"
+         y="99.012802">M<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan37723">2</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="42.682316"
+       y="98.819565"
+       id="text8653-3-0"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-6-6"
+         style="font-size:8.46667px;baseline-shift:sub;fill:#ffffff;stroke-width:0.264583"
+         x="42.682316"
+         y="98.819565">T<tspan
+   style="font-size:65%;baseline-shift:sub;fill:#ffffff"
+   id="tspan108722">1</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="82.140907"
+       y="98.819565"
+       id="text8653-3-0-6"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-6-6-1"
+         style="font-size:8.46667px;baseline-shift:sub;fill:#ffffff;stroke-width:0.264583"
+         x="82.140907"
+         y="98.819565">T<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan115798">2</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:12.7px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="176.26408"
+       y="99.012802"
+       id="text8653-3-9"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-6-3"
+         style="font-size:12.7px;baseline-shift:sub;stroke-width:0.264583"
+         x="176.26408"
+         y="99.012802">M<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan59405">5</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:12.7px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="138.78198"
+       y="99.012802"
+       id="text8653-1"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-27"
+         style="font-size:12.7px;baseline-shift:sub;stroke-width:0.264583"
+         x="138.78198"
+         y="99.012802">M<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan49456">4</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="122.21856"
+       y="98.819565"
+       id="text8653-3-0-7"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-6-6-9"
+         style="font-size:8.46667px;baseline-shift:sub;fill:#ffffff;stroke-width:0.264583"
+         x="122.21856"
+         y="98.819565">T<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan121245">3</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="162.45317"
+       y="98.819565"
+       id="text8653-3-0-0"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-6-6-2"
+         style="font-size:8.46667px;baseline-shift:sub;fill:#ffffff;stroke-width:0.264583"
+         x="162.45317"
+         y="98.819565">T<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan128606">4</tspan></tspan></text>
+    <rect
+       style="fill:#ffd5d5;fill-opacity:1;stroke:#000000;stroke-width:0.995944;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect130190"
+       width="10.791527"
+       height="28.235382"
+       x="4.4692154"
+       y="83.726624"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:12.7px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="6.1282878"
+       y="99.93029"
+       id="text8653-5"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-9"
+         style="font-size:12.7px;baseline-shift:sub;fill:#000000;stroke-width:0.264583"
+         x="6.1282878"
+         y="99.93029">L<tspan
+   style="font-size:65%;baseline-shift:sub;fill:#000000"
+   id="tspan18704-2" /></tspan></text>
+    <rect
+       style="fill:#ac9d93;fill-opacity:1;stroke:#000000;stroke-width:0.995944;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect130190-7"
+       width="10.791527"
+       height="28.235382"
+       x="196.19928"
+       y="83.726624"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="27.871626"
+       y="133.88445"
+       id="text136483"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan136481"
+         style="stroke-width:0.264583"
+         x="27.871626"
+         y="133.88445">pipeline execution direction</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="33.799816"
+       y="81.182327"
+       id="text2672"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan2670"
+         style="font-size:6.35px;stroke-width:0.264583"
+         x="33.799816"
+         y="81.182327">section 1</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="97.973732"
+       y="81.182327"
+       id="text2672-3"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan2670-5"
+         style="font-size:6.35px;stroke-width:0.264583"
+         x="97.973732"
+         y="81.182327">sec 2</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;white-space:pre;inline-size:34.8304;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="76.230034"
+       y="224.32175"
+       id="text2672-6"
+       transform="translate(72.461729,-143.13942)"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/section2.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         x="76.230034"
+         y="224.32175"
+         id="tspan26788">section 3</tspan></text>
+  </g>
+</svg>
diff --git a/docs/source/_static/sections/sections4.png b/docs/source/_static/sections/sections4.png
new file mode 100644
index 000000000..a9f83b41b
Binary files /dev/null and b/docs/source/_static/sections/sections4.png differ
diff --git a/docs/source/_static/sections/sections4.svg b/docs/source/_static/sections/sections4.svg
new file mode 100644
index 000000000..def5a79fd
--- /dev/null
+++ b/docs/source/_static/sections/sections4.svg
@@ -0,0 +1,460 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="210mm"
+   height="297mm"
+   viewBox="0 0 210 297"
+   version="1.1"
+   id="svg5"
+   inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+   sodipodi:docname="sections4.svg"
+   inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections3.png"
+   inkscape:export-xdpi="81"
+   inkscape:export-ydpi="81"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview7"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:document-units="mm"
+     showgrid="false"
+     inkscape:zoom="0.53165938"
+     inkscape:cx="226.64887"
+     inkscape:cy="536.99796"
+     inkscape:window-width="1850"
+     inkscape:window-height="1016"
+     inkscape:window-x="70"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer1" />
+  <defs
+     id="defs2">
+    <marker
+       style="overflow:visible;"
+       id="marker30195"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lend"
+       inkscape:isstock="true">
+      <path
+         transform="scale(0.8) rotate(180) translate(12.5,0)"
+         style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt;"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path30193" />
+    </marker>
+    <marker
+       style="overflow:visible;"
+       id="marker30031"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lend"
+       inkscape:isstock="true">
+      <path
+         transform="scale(0.8) rotate(180) translate(12.5,0)"
+         style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt;"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path29773" />
+    </marker>
+    <pattern
+       inkscape:collect="always"
+       xlink:href="#Strips1_3"
+       id="pattern130726"
+       patternTransform="matrix(10,0,0,10,1.5875,0)" />
+    <pattern
+       inkscape:collect="always"
+       patternUnits="userSpaceOnUse"
+       width="4"
+       height="1"
+       patternTransform="translate(0,0) scale(10,10)"
+       id="Strips1_3"
+       inkscape:stockid="Stripes 1:3"
+       inkscape:isstock="true">
+      <rect
+         style="fill:black;stroke:none"
+         x="0"
+         y="-0.5"
+         width="1"
+         height="2"
+         id="rect3717" />
+    </pattern>
+    <linearGradient
+       id="linearGradient72471"
+       inkscape:swatch="solid">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop72469" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4681"
+       inkscape:swatch="solid">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop4679" />
+    </linearGradient>
+    <marker
+       style="overflow:visible;"
+       id="Arrow1Lend"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lend"
+       inkscape:isstock="true">
+      <path
+         transform="scale(0.8) rotate(180) translate(12.5,0)"
+         style="fill-rule:evenodd;fill:context-stroke;stroke:context-stroke;stroke-width:1.0pt;"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path1880" />
+    </marker>
+  </defs>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="fill:#ffe6d5;stroke:#000000;stroke-width:0.6;stroke-miterlimit:4;stroke-dasharray:0.6, 0.6;stroke-dashoffset:0"
+       id="rect894"
+       width="70.067009"
+       height="44.858833"
+       x="51.811138"
+       y="74.529846"
+       ry="7.7731528"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections4.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <rect
+       style="fill:#ffe6d5;stroke:#000000;stroke-width:0.6;stroke-miterlimit:4;stroke-dasharray:0.6, 0.6;stroke-dashoffset:0"
+       id="rect894-5"
+       width="24.474846"
+       height="45.021702"
+       x="171.47801"
+       y="74.529846"
+       ry="7.8013749"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections4.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <rect
+       style="fill:#ffe6d5;stroke:#000000;stroke-width:0.6;stroke-miterlimit:4;stroke-dasharray:0.6,0.6;stroke-dashoffset:0"
+       id="rect894-3"
+       width="26.568621"
+       height="44.998947"
+       x="15.218083"
+       y="74.529999"
+       ry="7.7974319"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections4.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <rect
+       style="fill:#ffe6d5;stroke:#000000;stroke-width:0.6;stroke-miterlimit:4;stroke-dasharray:0.6, 0.6;stroke-dashoffset:0"
+       id="rect894-3-9"
+       width="30.061741"
+       height="44.960983"
+       x="131.45558"
+       y="74.529907"
+       ry="7.7908535"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections4.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <rect
+       style="fill:url(#pattern130726);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00098;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect99"
+       width="180.93855"
+       height="28.235384"
+       x="15.260741"
+       y="83.726624"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections4.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+       d="m 22.709249,123.4651 162.310091,0.0803"
+       id="path1875"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections4.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:12.7px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="21.573326"
+       y="99.012802"
+       id="text8653"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections4.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651"
+         style="font-size:12.7px;baseline-shift:sub;stroke-width:0.264583"
+         x="21.573326"
+         y="99.012802">M<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan18704">1</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:12.7px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="99.183304"
+       y="99.012802"
+       id="text8653-6"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections4.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-2"
+         style="font-size:12.7px;baseline-shift:sub;stroke-width:0.264583"
+         x="99.183304"
+         y="99.012802">M<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan44813">3</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:12.7px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="59.58456"
+       y="99.012802"
+       id="text8653-3"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections4.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-6"
+         style="font-size:12.7px;baseline-shift:sub;stroke-width:0.264583"
+         x="59.58456"
+         y="99.012802">M<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan37723">2</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="42.682316"
+       y="98.819565"
+       id="text8653-3-0"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections4.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-6-6"
+         style="font-size:8.46667px;baseline-shift:sub;fill:#ffffff;stroke-width:0.264583"
+         x="42.682316"
+         y="98.819565">T<tspan
+   style="font-size:65%;baseline-shift:sub;fill:#ffffff"
+   id="tspan108722">1</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="82.140907"
+       y="98.819565"
+       id="text8653-3-0-6"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections4.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-6-6-1"
+         style="font-size:8.46667px;baseline-shift:sub;fill:#ffffff;stroke-width:0.264583"
+         x="82.140907"
+         y="98.819565">T<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan115798">2</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:12.7px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="176.26408"
+       y="99.012802"
+       id="text8653-3-9"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections4.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-6-3"
+         style="font-size:12.7px;baseline-shift:sub;stroke-width:0.264583"
+         x="176.26408"
+         y="99.012802">M<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan59405">5</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:12.7px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="138.78198"
+       y="99.012802"
+       id="text8653-1"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections4.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-27"
+         style="font-size:12.7px;baseline-shift:sub;stroke-width:0.264583"
+         x="138.78198"
+         y="99.012802">M<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan49456">4</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="122.21856"
+       y="98.819565"
+       id="text8653-3-0-7"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections4.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-6-6-9"
+         style="font-size:8.46667px;baseline-shift:sub;fill:#ffffff;stroke-width:0.264583"
+         x="122.21856"
+         y="98.819565">T<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan121245">3</tspan></tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:8.46667px;line-height:1.25;font-family:sans-serif;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="162.45317"
+       y="98.819565"
+       id="text8653-3-0-0"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections4.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-6-6-2"
+         style="font-size:8.46667px;baseline-shift:sub;fill:#ffffff;stroke-width:0.264583"
+         x="162.45317"
+         y="98.819565">T<tspan
+   style="font-size:65%;baseline-shift:sub"
+   id="tspan128606">4</tspan></tspan></text>
+    <rect
+       style="fill:#ffd5d5;fill-opacity:1;stroke:#000000;stroke-width:0.995944;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect130190"
+       width="10.791527"
+       height="28.235382"
+       x="4.4692154"
+       y="83.726624"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections4.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:12.7px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="6.1282878"
+       y="99.93029"
+       id="text8653-5"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections4.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan8651-9"
+         style="font-size:12.7px;baseline-shift:sub;fill:#000000;stroke-width:0.264583"
+         x="6.1282878"
+         y="99.93029">L<tspan
+   style="font-size:65%;baseline-shift:sub;fill:#000000"
+   id="tspan18704-2" /></tspan></text>
+    <rect
+       style="fill:#ac9d93;fill-opacity:1;stroke:#000000;stroke-width:0.995944;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect130190-7"
+       width="10.791527"
+       height="28.235382"
+       x="196.19928"
+       y="83.726624"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections4.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="27.871626"
+       y="133.88445"
+       id="text136483"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections4.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan136481"
+         style="stroke-width:0.264583"
+         x="27.871626"
+         y="133.88445">pipeline execution direction</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="73.59082"
+       y="81.340309"
+       id="text2672"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections4.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan2670"
+         style="font-size:6.35px;stroke-width:0.264583"
+         x="73.59082"
+         y="81.340309">section 2</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="19.951332"
+       y="81.228691"
+       id="text2672-3"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections4.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan2670-5"
+         style="font-size:6.35px;stroke-width:0.264583"
+         x="19.951332"
+         y="81.228691">sec 1</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="175.4249"
+       y="81.228691"
+       id="text2672-3-6"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections4.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan2670-5-2"
+         style="font-size:6.35px;stroke-width:0.264583"
+         x="175.4249"
+         y="81.228691">sec 4</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:6.35px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="138.67375"
+       y="81.259567"
+       id="text2672-3-6-1"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections4.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan2670-5-2-2"
+         style="font-size:6.35px;stroke-width:0.264583"
+         x="138.67375"
+         y="81.259567">sec 3</tspan></text>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.264583;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.1;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker30195)"
+       d="m 148.48029,73.729694 c 0,0 11.4754,-16.005171 15.09677,-14.048188 3.62136,1.956985 12.66348,14.867025 12.66348,14.867025"
+       id="path30191"
+       sodipodi:nodetypes="csc"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections4.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:4.93889px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+       x="149.69334"
+       y="57.267658"
+       id="text32198"
+       inkscape:export-filename="/home/algol/Documents/DEV/httomo/docs/source/_static/sections4.png"
+       inkscape:export-xdpi="81"
+       inkscape:export-ydpi="81"><tspan
+         sodipodi:role="line"
+         id="tspan32196"
+         style="font-size:4.93889px;stroke-width:0.264583"
+         x="149.69334"
+         y="57.267658">side output</tspan></text>
+  </g>
+</svg>
diff --git a/docs/source/backends/list.rst b/docs/source/backends/list.rst
index 77112846b..37f661e22 100644
--- a/docs/source/backends/list.rst
+++ b/docs/source/backends/list.rst
@@ -11,7 +11,7 @@ If the package has a modular structure with an easy access to every
 method, for example as `TomoPy <https://tomopy.readthedocs.io>`_ 
 software or `scikit <https://scikit-image.org/>`_ library, then the 
 integration process is straightforward. 
-The required YAML template can be generated by using :ref:`developers_yamlgenerator`,
+The required YAML template can be generated by using :ref:`utilities_yamlgenerator`,
 or manually, and used with HTTomo. More complicated in structure packages would need 
 an additional wrapping, see for instance the reconstruction methods in 
 the `HTTomolibgpu <https://github.com/DiamondLightSource/httomolibgpu/blob/main/httomolibgpu/recon/algorithm.py>`_ library. 
@@ -41,6 +41,6 @@ by Data Analysis Group to work together with the HTTomo software.
 
 HTTomolib library (CPU)
 --------------------------
-`HTTomolib <https://github.com/DiamondLightSource/httomolib>`_ library is similar to HTTomolibgpu, but contains only CPU modules.
+`HTTomolib <https://github.com/DiamondLightSource/httomolib>`_ library is similar to HTTomolibgpu, but contains mostly CPU modules.
 
-*The HTTomo releases usually support a specific version of the backend package. Please check that the YAML templates are linked to the version advertised in the release.*
+.. note:: The HTTomo release usually supports a specific version of the backend package. Please check that the YAML templates are linked to the version advertised in the release.
diff --git a/docs/source/backends/templates.rst b/docs/source/backends/templates.rst
index 1df9c41ec..856ac3147 100644
--- a/docs/source/backends/templates.rst
+++ b/docs/source/backends/templates.rst
@@ -1,11 +1,14 @@
 .. _reference_templates:
 
-==========================
+================
 YAML Templates
-==========================
+================
+
+This section contains YAML templates from :ref:`backends_list`. These are ready-to-use templates can be either copy-pasted or
+downloaded in order to build your pipeline. 
+
+.. note:: When you click on a module you can find a link to the API of that module. This is where the description of the method and its arguments can be found. 
 
-This section contains YAML templates from :ref:`backends_list`. 
-You can also download templates for all supported backends in HTTomo ver.2.0 in one archive `HERE <https://github.com/DiamondLightSource/httomo/blob/main/yaml_templates/all_templates_httomo_v2_0.zip>`_.
 
 TomoPy Modules
 ---------------
@@ -39,18 +42,4 @@ v.2.0
 .. toctree::
    :glob:
 
-   ../api/httomolib.misc.images
-   ../api/httomolib.misc.segm
-
-.. _reference_templates_httomo:
-
-HTTomo
-------------------
-v.2.0
-'''''
-
-.. toctree::
-   :glob:
-   :maxdepth: 1
-
-   ../api/*load*
+   ../api/httomolib.*
diff --git a/docs/source/developers/how_to_contribute.rst b/docs/source/developers/how_to_contribute.rst
new file mode 100644
index 000000000..b35dbe147
--- /dev/null
+++ b/docs/source/developers/how_to_contribute.rst
@@ -0,0 +1,36 @@
+.. _developers_howtocontribute:
+
+How to contribute
+*****************
+
+For those who are interested in contributing to HTTomo, we provide here steps to follow. All additional enquires can be left in  
+the issues section on `HTTomo's Github page <https://github.com/DiamondLightSource/httomo/issues>`_. 
+
+1. Write a new data processing method in Python.
+   
+   One needs to write a method and make it accessible in either a separate library or integrating
+   it into the list of already :ref:`backends_list`. The latter option is preferred as some of the packages are 
+   maintained by HTTomo developers which will provide support during the integration.
+
+2. Expose the method in the library file in HTTomo
+
+   Then one needs to expose that method to HTTomo by editing the :ref:`pl_library`. You would need to specify
+   the main static descriptors of that method, such as, :code:`pattern`, :code:`implementation`, etc. If the implementation is :code:`cpu` only,
+   then :code:`memory_gpu` must be set to :code:`None`. However, if the method requires GPU, then you would need to provide more information so 
+   that HTTomo's framework would account for the memory use on the device. See :code:`HTTomolibgpu` library file for that. 
+   In a simple case, one can calculate the memory directly by providing multipliers in the library file. When memory
+   calculation is more complicated, one needs to add a Python script that does this calculation. See more in :ref:`developers_memorycalc`.
+
+3. Check the wrapper type 
+
+   Every method is executed by using :ref:`info_wrappers`. Check that the method fits the existing wrapper type, and if not, then possibly more work required 
+   to accommodate it. In most of the cases the method should fit the existing types. 
+
+4. Generate the Yaml template
+
+   HTTomo's UI requires :ref:`reference_templates` to execute the created method. One can either construct that YAML template manually or employ 
+   :ref:`utilities_yamlgenerator`.
+
+
+  
+  
diff --git a/docs/source/developers/memory_calculation.rst b/docs/source/developers/memory_calculation.rst
new file mode 100644
index 000000000..4a6d434be
--- /dev/null
+++ b/docs/source/developers/memory_calculation.rst
@@ -0,0 +1,83 @@
+.. _developers_memorycalc:
+
+GPU memory calculations
+***********************
+
+The ``calc_max_slices`` function must have the following signature::
+
+    def calc_max_slices(slice_dim: int,
+                        other_dims: Tuple[int, int],
+                        dtype: np.dtype,
+                        available_memory: int,
+                        **kwargs) -> Tuple[int, np.dtype]: ...
+
+The ``httomo`` package will call this function, passing in the dimension along which it will slice
+(``0`` for projection, ``1`` for sinogram), the other dimensions of the data array shape,
+the data type for the input, and the available memory on the GPU for method execution.
+Additionally it passes all other parameters of the method in the ``kwargs`` argument, 
+which can be used by the function in case parameters determine the memory consumption.
+The function should calculate how many slices along the slicing dimension it can fit into the given memory.
+Further, it returns the output datatype of the method (given the input ``dtype`` argument),
+which ``httomo`` will use for calling subsequent functions.
+
+**Example (All Patterns):**
+
+The ``httomo`` package will have to determine the number of slices along the projection dimension
+it can fit, given the other two dimension sizes. For example:
+
+* ``data.shape`` is ``[x, 10, 20]``, and ``httomo`` needs to determine the value for ``x``
+* The data type for ``data`` is ``float32`` (which means 4 bytes are needed per element)
+* Assume the available free memory on the GPU is 14,450 bytes
+* It will call the function as::
+
+    max_slices, outdtype = my_method.meta.calc_max_slices(0, (10, 20), np.float32(), 14450, **method_args)
+
+* The developer of the given method needs to provide this function implementation,
+  and it needs to calculate the maximum number of slices it can fit. 
+* Assuming that the method is very simple and does not need any local temporary memory,
+  requiring only space for the input and output array, it could be implemented as follows::
+
+    def _my_calc_max_slices(slice_dim: int,
+                            other_dims: Tuple[int, int],
+                            dtype: np.dtype,
+                            available_memory: int,
+                            **kwargs) -> int:
+        input_mem_per_slice = other_dims[0] * other_dims[1] * dtype.nbytes
+        output_mem_per_slice = input_mem_per_slice
+        max_slices = available_memory // (input_mem_per_slice + output_mem_per_slice)
+        return max_slices, dtype
+
+  (note that `//` denotes integer division, which rounds towards zero)
+* If the method needs extra memory internally, this should be taken into account in the implementation.
+  There are several methods in this respository which can serve as an example.
+
+* With the example data given above, the function would determine that 9 slices can fit:
+
+  * call ``calc_max_slices(0, (10, 20), np.float32(), 14450, **method_args)``
+  * ``input_mem_per_slice = 800``
+  * ``output_mem_per_slice = 800``
+  * => ``max_slices = 14450 // 1600 = 9``
+  
+
+Max Slices Tests
+----------------
+
+In order to test that the slice calculation function is reflecting reality, each method has a 
+unit test implemented that verifies that the calculation is right (within bounds).
+That is, it tests that the estimated slices are between 80% and 100% of the actually used slices.
+These tests also help to keep the memory estimation functions in sync with the implementation.
+
+The strategy for testing is the other way around:
+
+* We first run the actual method, given a specific data set, and record the maximum memory actually
+  used by the method.
+* Then, retrospectively, we call the ``calc_max_slices`` estimator function and pass in this memory
+  as the ``available_memory`` argument. So we're asking the estimation function to assume that 
+  the memory available is the actually used memory in the method call. 
+* The estimated number of slices should then be less or equal to the actual slices used earlier.
+* To make sure the function is not too conservative, we're checking that it returns at least 80%
+  of the slices that actually fit
+
+
+  
+  
diff --git a/docs/source/developers/yaml_generator.rst b/docs/source/developers/yaml_generator.rst
deleted file mode 100644
index 0f7bc85e3..000000000
--- a/docs/source/developers/yaml_generator.rst
+++ /dev/null
@@ -1,33 +0,0 @@
-.. _developers_yamlgenerator:
-
-YAML generator
-**************************
-The templates for :ref:`backends_content` are generated automatically using the YAML generator tool `provided <https://github.com/DiamondLightSource/httomo/blob/main/templates/yaml_templates_generator.py>`_ in the Github repo. 
-
-The code does the following: 
-
- * Generates a list of YAML files for all accessible methods in a chosen software package, such as TomoPy.
- * Modifies some extracted parameters in YAML templates to work with HTTomo smoothly.
- 
-How does it work:
-
-* You would need to provide a YAML file (e.g. *modules.yaml*) with the listed modules you would like to inspect and extract methods from, for instance for TomoPy this could be:
-
-.. code-block:: yaml
-
-    - tomopy.misc.corr
-    - tomopy.misc.morph
-
-* Then you run the generator using the following command:
- 
-.. code-block:: console
-   
-   python -m yaml_templates_generator -m /path/to/modules.yaml -o /path/to/outputfolder/
-
-* Please note that the package (e.g. TomoPy) must be installed into your conda environment and therefore be accessible when importing.
-
-* **For TomoPy templates only.** After templates have been generated for TomoPy we need to remove the ones that are not currently supported by HTTomo. We do that by looking into the library file that exists in HTTomo for TomoPy.
- 
-.. code-block:: console
-   
-   python -m remove_unsupported_templates -t /path/to/templates/ -l /path/to/library/file
\ No newline at end of file
diff --git a/docs/source/doc-conda-requirements.yml b/docs/source/doc-conda-requirements.yml
index 84933eb80..a0cda05c6 100644
--- a/docs/source/doc-conda-requirements.yml
+++ b/docs/source/doc-conda-requirements.yml
@@ -2,9 +2,14 @@ name: httomo-docs
 channels:
   - conda-forge
   - defaults
+  - httomo
+  - rapidsai
 dependencies:
-  - python==3.9
+  - python<=3.10
   - numpy
+  - tomopy==1.15
+  - httomolibgpu==2.0
+  - httomolib==2.0
   - sphinx
   - sphinx-book-theme
   - nbsphinx
diff --git a/docs/source/explanation/faq.rst b/docs/source/explanation/faq.rst
index a4a9c0958..160c13f91 100644
--- a/docs/source/explanation/faq.rst
+++ b/docs/source/explanation/faq.rst
@@ -26,11 +26,13 @@ Frequently Asked Questions
 
 .. dropdown:: I have a Python method, can it be used with HTTomo?
     
-    There is a high chance that it can be used. The method needs to be accessible in your Python environment and you will need a YAML template for it. See more on what kind of :ref:`backends_list` can be used with HTTomo. It is also recommended if you integrate your method there first.
+    There is a high chance that it can be used. The method needs to be accessible in your Python environment and you will need a YAML template for it. See more on what kind of :ref:`backends_list` can be used with HTTomo. It is also recommended if you integrate your method in a library first. See :ref:`developers_content`.
 	
 .. dropdown:: How can I contribute to HTTomo?
 
-	You can contribute by adding new methods to :ref:`backends_list` or by contributing to source base of the `HTTomo project <https://github.com/DiamondLightSource/httomo>`_.
+	You can contribute by adding new methods to :ref:`backends_list` or by contributing to the source base of the `HTTomo project <https://github.com/DiamondLightSource/httomo>`_.
+
+.. _faq_workstation:
 
 Working from a workstation at Diamond Light Source
 **************************************************
@@ -52,17 +54,17 @@ Working from a workstation at Diamond Light Source
 
 .. dropdown:: How can I use HTTomo inside the terminal?
 
-    1. Using the module system, ``module load`` the version of HTTomo you are using
+    1. Using the module system, ``module load`` allows you to obtain an access to the installed HTTomo at Diamond computing systems.
+    You can check which versions of HTTomo are installed with the command: :code:`module avail httomo`. You can either load a specific version 
+    with ``module load httomo/*httomo_version*`` or the default (recommended) version by executing: 
 
     .. code-block:: console
         
-        $ module load httomo/*httomo_version*
+        $ module load httomo
 
     This will add all of the related packages and files into your path, meaning
-    that your program will be able to access these packages when it is run.
-
-    These packages are required for the various plugins to run correctly.
-
+    that you will have an access to these packages from your loaded Python environment.
+    
     2. Configure your pipeline using the templates as shown previously 
     and run HTTomo.
 
@@ -70,7 +72,7 @@ Working from a workstation at Diamond Light Source
 .. dropdown:: What is ``module load`` doing?
 
     It is modifying the users environment, by including the path to certain
-    environment modules.
+    environment modules. In case of HTTomo it enables a specific conda environment with Python.
     
     You can read more about how module works at `modules.readthedocs.io <https://modules.readthedocs.io>`_
 
diff --git a/docs/source/explanation/process_list.rst b/docs/source/explanation/process_list.rst
index b50548b97..dab97ef74 100644
--- a/docs/source/explanation/process_list.rst
+++ b/docs/source/explanation/process_list.rst
@@ -3,7 +3,7 @@
 What is a process list?
 ------------------------
 
-A process list is a YAML file (see :ref:`explanation_yaml`) which is required to execute processing of data in HTTomo. The process list file consists of methods exposed as YAML templates stacked together 
+A process list is a YAML file (see :ref:`explanation_yaml`), which is required to execute the processing of data in HTTomo. The process list file consists of methods exposed as YAML templates stacked together 
 to form a **serially processed sequence of methods**. Each YAML template represents a standalone method or a loader which can be chained together with other templates to form a process list. 
 
-Please check how :ref:`howto_process_list` that could be used in HTTomo.
+Please check how :ref:`howto_process_list`.
diff --git a/docs/source/explanation/templates.rst b/docs/source/explanation/templates.rst
index 3fbdd9978..2d2a20d0e 100644
--- a/docs/source/explanation/templates.rst
+++ b/docs/source/explanation/templates.rst
@@ -3,29 +3,29 @@
 What is a template?
 ------------------------
 
-A YAML template (see :ref:`explanation_yaml`) in HTTomo is an interface to a method which can be used to build a pipeline of tasks or a process list that will be executed. See more on :ref:`explanation_process_list`
-The template provides communication with a method by setting input/output entries and also additional parameters, if required.
+A YAML template (see :ref:`explanation_yaml`) is a textual interface to a method, which can be executed in HTTomo. 
+The template provides a communication with a chosen method by setting its input/output entries and also additional parameters, if required.
 
-Let's consider this simple template for a median filter from the `TomoPy <https://tomopy.readthedocs.io/en/stable/api/tomopy.misc.corr.html#tomopy.misc.corr.median_filter3d>`_ package.
+The combination of YAML templates results in a processing list, also called a pipeline. See more on :ref:`explanation_process_list`
+
+As a simple template example, let's consider the template for the median filter from the `TomoPy <https://tomopy.readthedocs.io/en/stable/api/tomopy.misc.corr.html#tomopy.misc.corr.median_filter3d>`_ package.
 
 .. code-block:: yaml
     
-    tomopy.misc.corr:
-      median_filter3d:
-        data_in: tomo
-        data_out: tomo
+    - method: median_filter3d
+      module_path: tomopy.misc.corr
+      parameters:
         size: 3
 
-The first line :code:`tomopy.misc.corr` specifies the module in TomoPy library and the second :code:`median_filter3d` is the 
-name of the method in that module. HTTomo will interpret this in Python
-by importing the method:
+The first two lines are self-explanatory: the method's name and path to the module. HTTomo will interpret this in Python
+by importing the method as:
 
 .. code-block:: python
 
     from tomopy.misc.corr import median_filter3d
 
-After the method's name follows the list of parameters for that method. Parameters :code:`data_in` 
-and :code:`data_out` define the names of the input and the output datasets respectively. Then :code:`size` 
-is specific to the method parameter.
+The set of parameter values for that method is given in the *parameters* field.
+
+.. note:: Please note that in the original TomoPy's method, there is also the :code:`arr` parameter. This parameter is not exposed in the template because HTTomo will deal with all I/O aspects behind the scenes by using special wrappers. More on that in :ref:`detailed_about`. :ref:`utilities_yamlgenerator` will automatically generate the ready-to-be-used templates.
 
 Please see the list of all supported :ref:`reference_templates`.
diff --git a/docs/source/howto/how_to_run/at_diamond.rst b/docs/source/howto/how_to_run/at_diamond.rst
index 344837e98..7d2c63aa1 100644
--- a/docs/source/howto/how_to_run/at_diamond.rst
+++ b/docs/source/howto/how_to_run/at_diamond.rst
@@ -3,6 +3,8 @@
 Inside Diamond
 ++++++++++++++
 
+If you're not familiar what the module system is, please check :ref:`faq_workstation` guide.
+
 Cluster
 #######
 
diff --git a/docs/source/howto/httomo_features/centering.rst b/docs/source/howto/httomo_features/centering.rst
index f59ff7fb6..dabae8be8 100644
--- a/docs/source/howto/httomo_features/centering.rst
+++ b/docs/source/howto/httomo_features/centering.rst
@@ -8,12 +8,12 @@ What is it?
 ===========
 Identifying the optimal Centre of Rotation (CoR) parameter is an important 
 procedure to ensure the correctness of the reconstruction. It is crucial to find it 
-precisely, as the incorrect value can lead to distortions in reconstructions, therefore making post processing and
-quantification incorrect.  
+as precise as possible, as the incorrect value can lead to distortions in reconstructions, therefore making post processing and
+quantification invalid.  
 
 The required CoR parameter places the object (a scanned sample) into a coordinate system of the scanning device to ensure
 that the object is centered and rotates around its axis in this system, see :numref:`fig_centerscheme`. This is essential for
-valid reconstruction as the back projection model assumes a central placing of a sample with respect to one detector's axis
+valid reconstruction as the back projection model assumes a central placing of a sample with respect to the detector's axis
 (usually horizontal for synchrotrons).
 
 The CoR estimation problem is also sometimes referred to the centered sinogram. 
@@ -24,25 +24,24 @@ Therefore the optimisation problem usually involves minimising the artefacts in
 by varying the CoR value.
 
 .. _fig_centerscheme:
-.. figure::  ../../_static/CoR.svg
+.. figure::  ../../_static/cor/CoR.svg
     :scale: 55 %
     :alt: CoR scheme for tomography
 
-    The CoR parameter can be defined as a distance `d` that translates the coordinate system `(x,y)` of the scanned object to the coordinate system `(s,p)` of the acquisition device. This leads to a simple linear mapping `(s = x + d, p = y)`.
+    The CoR parameter can be defined as a distance `d` that translates the coordinate system `(x,y)` of the scanned object to the coordinate system `(s,p)` of the acquisition device. This leads to a simple linear mapping `(s = x +- d, p = y)`.
 
 .. _fig_center_find:
 .. figure::  ../../_static/cor/corr_select.png
     :scale: 85 %
     :alt: Finding CoR
 
-    The reconstructions using different CoR values. Incorrectly centered sinogram results in strong arching artefacts on the boundaries of the reconstructed object. Note how the arching is being reduced when closer to the correct value. 
+    The reconstructions using different CoR values. Incorrectly centered sinogram results in strong arching artifacts on the boundaries of the reconstructed object. Note how the arching is being reduced when `d` is closer to the correct value. 
 
 CoR in HTTomo
 =============
 
-The CoR parameter is present in any reconstruction template as 
-the :code:`center` parameter and can be configured either automatically (see :ref:`centering_auto`)
-or manually (see :ref:`centering_manual`).
+The CoR parameter is present in any reconstruction template given as the :code:`center` parameter. It can be configured either 
+automatically (see :ref:`centering_auto`) or manually (see :ref:`centering_manual`).
 
 .. _centering_auto:
 
@@ -50,54 +49,56 @@ Auto-centering
 ===============
 
 There is a `variety <https://scholar.google.com/scholar?hl=en&as_sdt=0%2C5&q=center+of+rotation+tomography&btnG=>`_ of 
-methods to estimate CoR automatically. At DLS we use a centering method which 
-was developed by Nghia Vo and it relies on Fourier analysis of a sinogram, see the `paper <https://opg.optica.org/directpdfaccess/a01b4da4-e3cf-474a-b428ca517599c609_297315/oe-22-16-19078.pdf?da=1&id=297315&seq=0&mobile=no>`_. 
+methods to estimate CoR automatically. At DLS, we frequently use the centering method which 
+was developed by Nghia Vo and it relies on the Fourier analysis of a sinogram, see the `paper <https://opg.optica.org/directpdfaccess/a01b4da4-e3cf-474a-b428ca517599c609_297315/oe-22-16-19078.pdf?da=1&id=297315&seq=0&mobile=no>`_. 
 This method is implemented in both TomoPy and HTTomolibgpu libraries and 
 available for HTTomo as *find_center_vo* template, see :ref:`reference_templates`. 
 
-Here are the steps to enable the auto-centering: 
+Here are the steps to enable the auto-centering and then use the estimated value in the reconstruction: 
 
-1. The auto-centering method should be added to a process list before the reconstruction.
-2. The value calculated in the centering routine :code:`cor` stored in the output dataset :code:`data_out`.
-3. The CoR value :code:`cor` needs to be passed to the reconstructor into the :code:`center` parameter. 
+1. The auto-centering method should be added to the process list before the reconstruction method.
+2. It is recommended to position any auto-centering method right after the loader, see :ref:`pl_conf_order`.
+3. The calculated CoR value with be stored in :ref:`side_output`.
+4. In the reconstruction module we refer to that value by placing the reference into the :code:`center` parameter. 
 
 .. code-block:: yaml
-  :emphasize-lines: 4,16
-
-   - tomopy.recon.rotation:
-       find_center_vo:
-         data_in: tomo
-         data_out: cor
-         ind: mid
-         smin: -50
-         smax: 50
-         srad: 6.0
-         step: 0.25
-         ratio: 0.5
-         drop: 20
-   - tomopy.recon.algorithm:
-       recon:
-         data_in: tomo
-         data_out: tomo
-         center: cor
-         sinogram_order: false
-         algorithm: gridrec
-         init_recon: null
-
-.. note:: The auto-centering plugin is computationally expensive and therefore one can specify :code:`ind: mid` to have it calculated only for a middle slice of your previewed data, see :ref:`previewing`. 
+  :emphasize-lines: 13,17
+
+  - method: find_center_vo
+    module_path: httomolibgpu.recon.rotation
+    parameters:
+      ind: mid
+      smin: -50
+      smax: 50
+      srad: 6
+      step: 0.25
+      ratio: 0.5
+      drop: 20
+    id: centering
+    side_outputs:
+      cor: centre_of_rotation
+  - method: FBP
+    module_path: httomolibgpu.recon.algorithm
+    parameters:
+      center: ${{centering.side_outputs.centre_of_rotation}}
+      filter_freq_cutoff: 0.6
+      recon_size: null
+      recon_mask_radius: null
+
+.. note:: When one auto-centering method fails it is recommended to try other available methods as they can still provide the correct or close to the correct CoR value. 
 
 .. _centering_manual:
 
 Manual Centering
 =================
-In the case when :ref:`centering_auto` does not work (e.g. the data is corrupted, incomplete or/and not within the field of view of the detector),
-one can use manual centering with :ref:`parameter_tuning` enabled.
 
-For manual centering you need to do the following steps:
+Unfortunately, there could be various cases when :ref:`centering_auto` fails, e.g., the projection data is corrupted, incomplete, the object is outside the field of view of the detector, and possibly other issues.
+In that case, it is recommended to find the center of rotation manually. :ref:`parameter_tuning` can simplify such search significantly. 
+
+To enable manual centering, one would need to do the following steps:
 
 1. Ensure that the auto centering estimation method is not in the process list (remove or comment it). 
-2. Modify the centre of rotation value :code:`center` in the reconstruction plugin by substituting a number instead of the :code:`cor` parameter.
-3. If you would like to sweep across multiple CoR values, you can do that with a special phrase in your template :code:`!Sweep` or :code:`!SweepRange`. Please see more at :ref:`parameter_tuning_range`.
+2. Modify the centre of rotation value :code:`center` in the reconstruction plugin by substituting a number instead of the reference to side outputs.
 
 
 
diff --git a/docs/source/howto/httomo_features/parameter_tuning.rst b/docs/source/howto/httomo_features/parameter_tuning.rst
index 79361969e..75a4b67c4 100644
--- a/docs/source/howto/httomo_features/parameter_tuning.rst
+++ b/docs/source/howto/httomo_features/parameter_tuning.rst
@@ -3,9 +3,6 @@
 Parameter Tuning
 ^^^^^^^^^^^^^^^^
 
-FEATURE TO BE ADDED IN THE FOLLOWING RELEASES
-==============================================
-
 What is it?
 ===========
 
@@ -21,4 +18,8 @@ difficult to guess a reasonable value of a method's parameter. There could be
 many reasons for this situation, such as being unfamiliar with the method, or
 working with unfamiliar data, etc.
 
+.. warning::
+    Because of the significant modifications in HTTomo ver.2.0, the parameters tuning feature is not 
+    currently supported. HTTomo developers recognise the importance of it for users and will be 
+    delivered as soon possible with the next release.
 
diff --git a/docs/source/howto/httomo_features/previewing.rst b/docs/source/howto/httomo_features/previewing.rst
index faffb418e..24b90525c 100644
--- a/docs/source/howto/httomo_features/previewing.rst
+++ b/docs/source/howto/httomo_features/previewing.rst
@@ -5,61 +5,77 @@ Previewing
 ^^^^^^^^^^
 
 Previewing is the way to change the dimensions of the input data by reducing them. 
-It also can be interpreted as a data cropping or data slicing operation. It is usually
-needed to reduce the size of the input data, and therefore accelerate the processing.
-It is also recommended to use when the search for parameters is required, see :ref:`parameter_tuning`.
-Skip to :ref:`previewing_enable` for information about how to use it in HTTomo.
+It also can be interpreted as a data cropping or data slicing operation.
 
-Previewing in the Loader
+Reduction of the input data is often done to remove unnecessary/useless
+information, and to accelerate the processing time. It is also recommended to use
+when searching for optimal parameter values, see :ref:`parameter_tuning`. Skip to
+:ref:`previewing_enable` for information about how to use it in HTTomo.
+
+Previewing in the loader
 ========================
 
-Previewing is an important part of the loader (see :ref:`reference_loaders`). Here we present a brief explanation on how
-to operate a :code:`preview` parameter in the *standard_tomo* loader (see the corresponding template in
-:ref:`reference_templates_httomo`).
+Previewing is an important part of the loader (see :ref:`reference_loaders`). Here,
+a brief explanation is given on how to use the :code:`preview` parameter in the
+:code:`standard_tomo` loader.
 
-.. note:: HTTomo assumes that the input data is a 3 dimensional (3D) array, where the 1st axis is the *angular* dimension, the 2nd axis is the *vertical* `Y`-detector dimension and the 3rd axis is the *horizontal* `X`-detector dimension (see :numref:`fig_dimsdata`).
+.. note:: HTTomo assumes that the input data is a three dimensional (3D) array,
+   where the 1st axis is the *angular* dimension, the 2nd axis is the *vertical*
+   `Y`-detector dimension and the 3rd axis is the *horizontal* `X`-detector
+   dimension (see :numref:`fig_dimsdata`).
 
 .. _fig_dimsdata:
-.. figure::  ../../_static/dims_prev.svg
+.. figure::  ../../_static/preview/dims_prev.svg
     :scale: 55 %
     :alt: 3D data
 
     3D projection data and their axes 
 
-Full data preview
-+++++++++++++++++
 
-By default the :code:`preview` parameter in the YAML template of the loader 
-allows the **full** data to be processed without any changes, i.e., the previewing is disabled:
+Structure of the :code:`preview` parameter value
+================================================
 
-.. code-block:: yaml  
+The value of the :code:`preview` parameter has three fields, one for each axis in
+the 3D input data, and also a :code:`start` and :code:`stop` field for each
+dimension:
 
-    preview:
-        -  # angular dim
-        -  # Y-dim
-        -  # X-dim
+.. code-block:: yaml
 
-The above can be also written as: 
+   preview:
+    angles:
+      start:
+      stop:
+    detector_y:
+      start:
+      stop:
+    detector_x:
+      start:
+      stop:
 
-.. code-block:: yaml  
+.. warning:: Note that previewing in the :code:`angles` dimension is not yet
+   supported by loaders in HTTomo, but ignoring data along this dimension is a
+   feature that will be coming in a future release.
 
-    preview:
-        - null  # angular dim
-        - null  # Y-dim
-        - null  # X-dim
+Full data preview
+=================
 
-Both of the cases will be parsed to a following list in Python :code:`[:,:,:]`.
+If the :code:`preview` parameter is omitted entirely in the loader configuration,
+then the full data will be selected and no cropping/previewing will be applied. Ie,
+previewing is disabled in this case.
 
 .. _previewing_enable:
 
 Enabling data preview
-+++++++++++++++++++++
+=====================
 
 In order to change the input data dimensions and accelerate the processing 
-pipeline one can do two of the following operations. *Although this is optional, by doing
-this you reduce the size of the reconstructed volume which can have a
-significant impact on the post-processing time.* In the figure bellow the projections 
-have been cropped vertically and horizontally. 
+pipeline, one can do two of the following operations.
+
+.. note:: Although this is optional, by doing this the size of the reconstructed
+   volume is reduced without any detriment to the data, which can result in a
+   significant speedup in post-processing analysis time.
+
+In the figure below the projections have been cropped vertically and horizontally.
 
 Before cropping |pic1| and after |pic2|
 
@@ -73,20 +89,19 @@ Before cropping |pic1| and after |pic2|
 1. Reduce the size of the vertical dimension (detector- `Y`) by removing blank regions in your data (top and bottom cropping),
    see :numref:`fig_dimsdataY`. The blank areas, if any, can be established by looking through the sequence of raw projections. 
 
-    .. code-block:: yaml
+   .. code-block:: yaml
+
+       preview:
+         detector_y:
+           start: 200
+           stop: 1800
+
+   This will crop the data starting at slice 200 and finishing at slice 1800,
+   therefore resulting in the data with the vertical dimension equal to 1600 pixels.
+   In Python this will be interpreted as :code:`[:,200:1800,:]`.
 
-        preview:
-            -  
-            - start: 200
-              stop: 1800
-            -  
-    
-    This will crop the data starting at slice 200 and finishing at slice 1800, 
-    therefore resulting in the data with the vertical dimension equal to 1600 pixels. 
-    In Python this will be interpreted as :code:`[:,200:1800,:]`.
-    
 .. _fig_dimsdataY:
-.. figure::  ../../_static/dims_prevY.svg
+.. figure::  ../../_static/preview/dims_prevY.svg
     :scale: 55 %
     :alt: 3D data, Y slicing
 
@@ -96,20 +111,22 @@ Before cropping |pic1| and after |pic2|
    see :numref:`fig_dimsdataX`.
    
    .. warning::
-    Please be aware that the cropping of this dimension can create issues with the automatic centering 
+    Please be aware that cropping this dimension can create issues with the automatic centering
     and potentially lead to reconstruction artefacts, especially if iterative methods are used. 
-    It is a general practice to be more conservative with the cropping of the `X` detector.
+    It is general practice to be more conservative with the cropping of the `X`
+    detector dimension.
 
    .. code-block:: yaml
 
-        preview:
-            -  
-            - 
-            - start: 100
-              stop: 2000 
+       preview:
+         detector_x:
+           start: 100
+           stop: 2000
+
+   In Python this will be interpreted as :code:`[:,:,100:2000]`.
     
 .. _fig_dimsdataX:
-.. figure::  ../../_static/dims_prevX.svg
+.. figure::  ../../_static/preview/dims_prevX.svg
     :scale: 55 %
     :alt: 3D data, X slicing
 
@@ -117,11 +134,66 @@ Before cropping |pic1| and after |pic2|
 
 One can combine vertical and horizontal cropping with:
 
-   .. code-block:: yaml
+.. code-block:: yaml
+
+    preview:
+      detector_y:
+        start: 200
+        stop: 1800
+      detector_x:
+        start: 100
+        stop: 2000
+
+The :code:`mid` value
+=====================
+
+The :code:`detector_y` and :code:`detector_x` dimension fields also support the
+value :code:`mid` in addition to the :code:`start` and/or :code:`stop` fields.
+Specifying :code:`mid` for either of these dimensions will result in the middle
+three slices of that dimension being selected.
+
+.. warning:: The :code:`angles` dimension field doesn't support the value
+   :code:`mid`
+
+Rules for omitting fields in the :code:`preview` parameter value
+================================================================
+
+One may have noticed that, in many of the :code:`preview` parameter value examples
+above, some fields were omitted. It's infrequently needed to crop all three
+dimensions, and sometimes when cropping, only either the start or end is of
+interest.
+
+With these in mind, along the general notion that anything is more readable
+when unnecessary information is omitted, there are several ways in which the
+
+- dimension fields
+- start/stop fields
+
+in the :code:`preview` parameter value can be omitted in the process list, and
+still achieve the desired cropping behavior.
+
+Omitting one or more dimension fields
+-------------------------------------
+
+If any of the three top-level dimension fields are omitted, then no cropping will
+be applied to the omitted dimension(s).
+
+If a top-level dimension is provided but given no value, then no cropping will be
+applied to that dimension either. Ie, the following configuration will select the
+entire input data and apply no cropping/previewing:
+
+.. code-block:: yaml
+
+    preview:
+      angles:
+      detector_y:
+      detector_x:
+
+Omitting the :code:`start` or :code:`stop` fields
+-------------------------------------------------
+
+For a given dimension field:
 
-        preview:
-            -  
-            - start: 200
-              stop: 1800
-            - start: 100
-              stop: 2000 
\ No newline at end of file
+- if the :code:`start` field is omitted, then the start value is assumed to be 0
+- if the :code:`stop` field is omitted, then the stop value is assumed to be the
+  very last element in that dimension
diff --git a/docs/source/howto/installation.rst b/docs/source/howto/installation.rst
index 57553d2e7..51977e636 100644
--- a/docs/source/howto/installation.rst
+++ b/docs/source/howto/installation.rst
@@ -2,20 +2,27 @@ Installation Guide
 ******************
 
 Install HTTomo as a pre-built conda Python package
-======================================================
+==================================================
+
+This installation is preferable as it should take care all of dependencies for you by getting them from the dedicated anaconda channel. 
+
 .. code-block:: console
 
    $ conda env create --name httomo # create a fresh conda environment
    $ conda install -c conda-forge -c https://conda.anaconda.org/httomo/ httomo
 
 Install as a Python module
-======================================================
+===========================
+
+If installation above for some reason is not working for you, then the best way to install HTTomo is to create conda environment first and then 
+`pip install` HTTomo into it. You will need to `git clone` HTTomo repository to your disk first. 
+
 .. code-block:: console
     
    $ git clone git@github.com:DiamondLightSource/HTTomo.git # clone the repo
    $ conda env create --name httomo --file conda/environment.yml # install dependencies
    $ conda activate httomo # activate environment
-   $ pip install .[httomolib,tomopy] # Install the module + backend(s)
+   $ pip install . # Install the module
 
 Setup HTTomo development environment:
 ======================================================
diff --git a/docs/source/howto/interpret_logger.rst b/docs/source/howto/interpret_logger.rst
new file mode 100644
index 000000000..784fa0b0f
--- /dev/null
+++ b/docs/source/howto/interpret_logger.rst
@@ -0,0 +1,43 @@
+.. _info_logger:
+
+Interpret Log File
+======================
+
+This section contains information on how to interpret the log file created by HTTomo. 
+
+HTTomo uses :code:`loguru` software to unify and simplify the logging system. During the job execution, the concise information 
+goes to the terminal (see :numref:`fig_log`) and also to the :code:`user.log` file. More verbose information, that is usually 
+needed to debug the run, is saved into the :code:`debug.log` file. Let us explain few main elements of the :code:`user.log` 
+file and also stdout. 
+
+.. _fig_log:
+.. figure::  ../_static/log/log_screenshot.png
+    :scale: 40 %
+    :alt: HTTomo log screenshot
+
+    The screenshot of the terminal output (AKA stdout) which also goes into the :code:`user.log` file. 
+
+
+* :code:`Pipeline has been separated into N sections`
+   This means that `N` :ref:`info_sections` created for this pipeline and each section contains a certain amount of methods grouped together to work on :ref:`blocks_data`. The progress can be seen in every 
+   section processing all of the input data divided into :ref:`chunks_data` and :ref:`blocks_data`, before continue to the next section.
+
+* :code:`Running loader`
+   The loader does not belong to sections and always at the start of the pipeline. Note that the loader
+   loads the data using the specific :code:`pattern=projection` (See more :ref:`info_reslice`). The same pattern is used by the 
+   following section. 
+
+* :code:`Section N with the following methods`
+   Each section contains a number of methods that run sequentially for each :ref:`blocks_data` 
+   of data. When all blocks are processed, the user will see the message :code:`Finished processing the last block`. This means that all of the 
+   input data have been processed in this section and the pipeline moves to the next section, if it exists.
+
+* :code:`50%|#####     | 1/2 [00:02<00:02,  2.52s/block]`
+   These are the progress bars showing how much data is being processed in every section. 
+   The percentage progress bar demonstrates how many blocks have been processed by the `M` number of methods of the current section. Specifically in this case 
+   we have :code:`1/2`, which means that one of two blocks completed (hence `50%`). Then :code:`00:02<00:02` shows the time in seconds to 
+   reach the current block (time elapsed) and the remaining time to complete all iterations over blocks. The :code:`2.52s/block` part is an 
+   estimation of how much time it's taking per block. When the time per block is less than one second then this can be presented as :code:`block/s` instead.
+   See :code:`save_to_images` progress report, for instance. 
+
+.. note:: When interpreting progress bars, one possible misunderstanding can be an association of the progress with the methods completed. Because each piece of data (a block) can be processed by multiple methods, we report on how many blocks have been processed instead.
\ No newline at end of file
diff --git a/docs/source/howto/process_lists/editing_process_lists.rst b/docs/source/howto/process_lists/editing_process_lists.rst
deleted file mode 100644
index fd94cad3a..000000000
--- a/docs/source/howto/process_lists/editing_process_lists.rst
+++ /dev/null
@@ -1,163 +0,0 @@
-Editing process lists
----------------------
-
-The concepts in the previous page will have hopefully helped you to understand
-how to define your desired pipeline with HTTomo in the most computationally
-efficient manner. This page will provide guidance on editing a process list
-file.
-
-Workflow for Writing Process Lists
-==================================
-
-Given time working with HTTomo, a user will likely settle on a workflow for
-defining process list YAML files that suits their individual needs.
-
-As a starting point, something like the following is suggested:
-
-- copy+paste templates for the desired methods from the
-  :ref:`reference_templates` section
-- manually edit the parameter values within the copied template as needed,
-  checking the documentation for the relevant backend if/when necessary for
-  further guidance on the method's parameters
-- intermittently run the :ref:`YAML checker <utilities_yamlchecker>` during
-  editing of the YAML file to detect any errors early on
-
-Method Parameters vs. HTTomo Method Parameters
-==============================================
-
-In addition to parameters for a method that influence the processing that the
-method performs, there are some parameters that can be used in a method's YAML
-configuration that modify in some way how HTTomo handles the method (for
-example, whether or not to write the output of the method to a file).
-
-Since these parameters are *not* parameters for the method itself and are
-instead specific to HTTomo, the next section will go through these extra
-parameters, explaining what they are for and giving examples of how they can be
-used.
-
-HTTomo Method Parameter Guide
-=============================
-
-.. _save-result-examples:
-
-Saving intermediate files with :code:`save_result`
-++++++++++++++++++++++++++++++++++++++++++++++++++
-
-As explained in :ref:`httomo-saving`, by default, HTTomo will *not* write the
-output of a method to a file unless under certain conditions (please see the
-link for a description of these file-saving conditions).
-
-HTTomo can be informed to write or not write the output of a method to a file
-with the :code:`save_result` parameter. Its value is a boolean, so either
-:code:`True` or :code:`False` are valid values for it.
-
-
-Example: save output of a specific method
-#########################################
-
-Suppose we wanted to save the output of the TomoPy :code:`median_filter`, we
-could add :code:`save_result: True` to its parameters:
-
-.. code-block:: yaml
-  :emphasize-lines: 7
-
-  - tomopy.misc.corr:
-      median_filter:
-        data_in: tomo
-        data_out: tomo
-        size: 3
-        axis: 0
-        save_result: True
-
-Example: using :code:`--save_all` and :code:`save_result` together
-##################################################################
-
-When the :code:`--save_all` option/flag is provided, the :code:`save_result`
-parameter can be used to override individual method's to *not* save their
-output.
-
-In contrast to the previous example, suppose we had a process list where we
-would like to save the output of all methods *apart* from the
-:code:`median_filter`.  This could be achieved by using :code:`--save_all` when
-running HTTomo, along with providing :code:`save_result: False` for
-:code:`median_filter` in the YAML:
-
-.. code-block:: yaml
-  :emphasize-lines: 7
-
-  - tomopy.misc.corr:
-      median_filter:
-        data_in: tomo
-        data_out: tomo
-        size: 3
-        axis: 0
-        save_result: False
-
-Omitting :code:`data_out`
-+++++++++++++++++++++++++
-
-It could be the case that one would like to have the same name for the output
-dataset as the input dataset (keeping in mind that this will *overwrite* the
-input of a method with the output of the method once the method has finished its
-processing).
-
-In such cases, it can be tedious or an eyesore in the YAML to always be
-specifying both :code:`data_in` and :code:`data_out` to have the same value in
-each method's configuration.
-
-To help with this, the :code:`data_out` parameter can be omitted and HTTomo will
-assume that the output dataset name is the same as the input dataset name.
-
-.. warning::
-  As previously stated, please be aware that using this will be *overwriting*
-  the input dataset of a method with the output of the method.
-
-  In particular, please be careful and check if any methods further down the
-  pipeline would need to process the original dataset, as this will influence if
-  using this functionality will unintentionally interfere with the desired
-  pipeline.
-
-Using a different name for the output dataset
-+++++++++++++++++++++++++++++++++++++++++++++
-
-In principle, the output dataset name need not be the same as the input dataset
-name. Specifying a different dataset name is valid, so the following is fine:
-
-.. code-block:: yaml
-  :emphasize-lines: 3-4
-
-  - tomopy.misc.corr:
-      median_filter:
-        data_in: tomo
-        data_out: tomo_diff
-        size: 3
-        axis: 0
-
-In particular, this ensures that the input dataset :code:`tomo` is *not*
-being overwritten with the result of the :code:`median_filter` method. Instead,
-the result is stored in a different dataset, called :code:`tomo_diff`.
-
-Using a dataset as a parameter value
-++++++++++++++++++++++++++++++++++++
-
-There are cases where the output dataset of a method is needed as the value of
-a parameter for a method further down the pipeline. For example, the output of a
-method that calculates the center of rotation needing would be used as the value
-of a CoR parameter for a reconstruction method.
-
-HTTomo supports providing a dataset name as the value of a parameter to handle
-situations like this.
-
-Example
-#######
-
-The following example comes from taking snippets from an example in the HTTomo
-repo, where the :code:`find_center_vo` method is generating an output dataset
-called :code:`cor`, which is then being used as the value of the :code:`center`
-parameter for the :code:`recon` method:
-
-.. literalinclude:: ../../../../tests/samples/pipeline_template_examples/pipeline_cpu1.yaml
-  :language: yaml
-  :lines: 31-50
-  :emphasize-lines: 4,16
-  :caption: tests/samples/pipeline_template_examples/pipeline_cpu1.yaml
diff --git a/docs/source/howto/process_lists/httomo_parameters.rst b/docs/source/howto/process_lists/httomo_parameters.rst
new file mode 100644
index 000000000..334e4ecd8
--- /dev/null
+++ b/docs/source/howto/process_lists/httomo_parameters.rst
@@ -0,0 +1,24 @@
+.. _howto_proc_httomo_params:
+
+==========================
+HTTomo-specific parameters
+==========================
+
+Method Parameters vs. HTTomo Method Parameters
+----------------------------------------------
+
+In addition to parameters for a method that influence the processing that the
+method performs, there are some parameters that can be used in a method's YAML
+configuration that modify in some way how HTTomo handles the method (for
+example, whether or not to write the output of the method to a file).
+
+Since these parameters are *not* parameters for the method itself and are
+instead specific to HTTomo, the sections below demonstrate these extra
+parameters, explaining what they are for and giving examples of how they can be
+used.
+
+.. toctree::
+   :maxdepth: 1
+   
+   side_outputs/side_out
+   save_results/save_results
diff --git a/docs/source/howto/process_lists/process_list_configure.rst b/docs/source/howto/process_lists/process_list_configure.rst
index 60110892d..4ec8a7ed9 100644
--- a/docs/source/howto/process_lists/process_list_configure.rst
+++ b/docs/source/howto/process_lists/process_list_configure.rst
@@ -1,87 +1,100 @@
 .. _howto_process_list:
 
-Configure process list using templates
-======================================
+Configure efficient pipelines
+=============================
 
-This section explains how to build a process list (see more on :ref:`explanation_process_list`) from YAML templates (see more on :ref:`explanation_templates`).
-
-We focus on several important aspects which can be helpful to keep in mind before configuring the process list. They are :ref:`pl_conf_order`, :ref:`pl_reslice`, and :ref:`pl_platform_sections`. The first two topics are
-recommended to read if you are new to HTTomo and :ref:`pl_platform_sections` is for more in-depth information about the inner workings of HTTomo when using GPUs.
-
-**The better understanding of those elements will enable you to build more computationally efficient pipelines**. 
-
-Please become familiar with :ref:`explanation_yaml` and use editors that support it. We can recommend Visual Studio Code, Atom, Notepad++. 
-To avoid errors during the HTTomo run using a process list, please validate it first using YAML checker tool (see :ref:`utilities_yamlchecker`).
+Here we focus on several important aspects which can be helpful while configuring a
+process list. In order to construct more efficient pipelines one needs to be
+familiar with :ref:`pl_conf_order`, :ref:`info_reslice`, and :ref:`info_sections`.
 
 .. _pl_conf_order:
 
-Methods order
--------------
-To build a process list with multiple tasks, you will need to copy-paste the content of YAML files from the provided :ref:`reference_templates`.
-The general rules for building a process list are the following: 
+Method pattern and method order
+-------------------------------
 
-* Any process list starts with :ref:`reference_loaders` which are provided as :ref:`reference_templates`.
-* The execution order of the methods in the process list is **sequential** starting from the top to the bottom.
+An HTTomo pipeline consists of multiple methods ordered sequentially and is
+executed in the given serial order (meaning that there is no branching in HTTomo
+pipelines). Behind the scenes HTTomo will take care of providing the input data
+for each method, and passing the output data of each method to the next method.
 
-For example, for tomographic processing, we can build the following process list by using mostly TomoPy templates.
+Different methods require data to be provided in different orientations (ie, the
+direction of slicing an array). In order to satisfy those requirements, the notion
+of a method having a *pattern* was introduced in HTTomo, i.e., every method has a
+pattern associated with it. So far HTTomo supports three types of patterns:
+:code:`projection`, :code:`sinogram`, and  :code:`all`.
 
-.. dropdown:: A basic TomoPy full data processing pipeline
+.. note:: Transitioning between methods that change the pattern from
+   :code:`projection` to :code:`sinogram` or vice versa will trigger a costly
+   :ref:`info_reslice` operation. Methods with pattern :code:`all` inherit the
+   pattern of the previous method.
 
-    .. literalinclude:: ../../../../tests/samples/pipeline_template_examples/pipeline_cpu1.yaml
+In order to minimise the amount of reslice operations it is best to group methods
+together based on the pattern. For example, putting methods that work with
+projections in one group, and methods that work with sinograms in another group. It
+may not always be possible to group the methods in such way, especially with longer
+pipelines. However, it's useful to keep this in mind if one seeks the most
+computationally efficient pipeline.
 
-In this process list the data will be loaded using the standard HTTomo loader to read `HDF5 <https://www.hdfgroup.org/solutions/hdf5/>`_ dataset. 
-Then the loaded data is normalised, the centre of rotation estimated and provided to the reconstruction. 
-Finally the result of the reconstruction will be saved as tiff files using HTTomolib library as a backend. 
-Note that the result of the reconstruction will be also saved as an HDF5 file. 
+The pattern of any supported method can be found in :ref:`pl_library`.
 
-.. _pl_reslice:
+.. note:: Currently, HTTomo loaders use the :code:`projection` pattern by default,
+   therefore it's best for efficiency purposes that the first method after the
+   loader has the :code:`projection` pattern. It is also recommended to place
+   :ref:`centering` methods right after the loader.
 
-Re-slicing
--------------
-The re-slicing of data happens when we need to access a slice which is orthogonal to the current one. 
-In tomography, we normally work in the space of projections or in the space of sinograms. Different methods require different slicing 
-orientations, or, as we call it, a *pattern*. The change of the pattern is a **re-slice** operation or a transformation of an array by 
-re-slicing in a particular direction. For instance, from the projection space/pattern to the sinogram space/patterns, as in :numref:`fig_reslice`.
+.. _pl_library:
 
-.. _fig_reslice:
-.. figure::  ../../_static/reslice.png
-    :scale: 40 %
-    :alt: Reslicing procedure
+Library files
+-------------
 
-    The re-slicing operation for tomographic data. The transformation from the stack of projections to the stack of sinograms by slicing the 3D array in the direction parallel to the projection angles.
+Here is the list of :ref:`pl_library` for backends where patterns and other fixed arguments for methods are specified. When HTTomo operates 
+with a certain method it always refers to its library file in order get the specific requirements for that method. 
 
-In HTTomo, the re-slicing operation is performed on the CPU as we need to access all the data. Even if the pipeline consists of only GPU methods stacked together, 
-the re-slicing step will transfer the data from the GPU device to the CPU memory. This operation can be costly for big datasets and we recommend to minimise the number of 
-re-slicing operations in your pipeline. Normally for tomographic pre-processing and reconstruction there is just one re-slice needed. HTTomo checks if there is more than 
-one reslice in the pipeline and warn the user about it. The user will be prompted to change the order of the methods to minimise the number of the reslicing operations. 
+.. dropdown:: TomoPy's library file
 
-For example to execute the methods bellow, **two** re-slicing operations needed:
+    .. literalinclude:: ../../../../httomo/methods_database/packages/external/tomopy/tomopy.yaml    
 
-.. code-block:: yaml
+.. dropdown:: Httomolibgpu's library file
     
-    1. normalisation
-    2. median_filter
-    3. centering
-    4. paganin_filter
-    5. reconstruction
-
-The main issue here is that the :code:`centering` method requires pattern to be `sinogram`, :code:`paganin_filter` needs `projections` and 
-:code:`reconstruction` needs sinogram pattern again. Therefore we need to re-slice two times to accommodate for that. To remove one 
-reslice operation and obtain exactly the same result (but quicker), one needs to change the order of methods like this: 
+    .. literalinclude:: ../../../../httomo/methods_database/packages/external/httomolibgpu/httomolibgpu.yaml
 
-.. code-block:: yaml
+.. dropdown:: Httomolib's library file
     
-    1. normalisation
-    2. median_filter
-    3. paganin_filter
-    4. centering    
-    5. reconstruction
-
-To conclude, it is useful to look for the order of methods in your pipelines and 
-rearrange them to reduce the amount of potentially unnecessary reslicing steps.
-
-.. _pl_platform_sections:
-
-Platform Sections
------------------
-to be added...
+    .. literalinclude:: ../../../../httomo/methods_database/packages/external/httomolib/httomolib.yaml
+
+.. _pl_grouping:
+
+Grouping CPU/GPU methods
+------------------------
+
+There are different implementations of methods in :ref:`backends_list`, and can be
+classified into three categories:
+
+- :code:`cpu` methods. These are traditional CPU implementations in Python or other
+  compiled languages. The exposed TomoPy functions are mostly pure CPU.
+- :code:`gpu` methods. These are methods that use GPU devices and require an input
+  array in CPU memory (e.g. Numpy ndarray).
+- :code:`gpu_cupy` methods. These are a special group of methods, mostly from the
+  `HTTomolibgpu <https://github.com/DiamondLightSource/httomolibgpu>`_ library,
+  that are executed on GPU devices using the CuPy API. The main difference between
+  :code:`gpu_cupy` methods and :code:`gpu` methods is that :code:`gpu_cupy` methods
+  require CuPy arrays as input instead of Numpy arrays. The CuPy arrays are then
+  kept in GPU memory across any consecutive :code:`gpu_cupy` methods until they are
+  requested back on the CPU. This approach allows more flexibility with the
+  sequences of GPU methods, as they can be chained together for more efficient
+  processing.
+
+.. note:: If GPUs are available to the user, it is recommended to use
+   :code:`gpu_cupy` or :code:`gpu` methods in process lists. The methods themselves
+   are usually optimised for performance and HTTomo will take care of chaining the
+   methods together to avoid unnecessary CPU-GPU data transfers.
+
+The implementation of any supported method can be found in :ref:`pl_library`.
+
+Minimise writing to disk
+------------------------
+
+HTTomo does not require :ref:`save-result-examples` by default. If the result of a
+method is not needed as a separate file, then there is no reason for it to be
+written to disk. This is because saving intermediate files can significantly slow
+down the execution time.
diff --git a/docs/source/howto/process_lists/save_results/save_results.rst b/docs/source/howto/process_lists/save_results/save_results.rst
new file mode 100644
index 000000000..173de28a9
--- /dev/null
+++ b/docs/source/howto/process_lists/save_results/save_results.rst
@@ -0,0 +1,54 @@
+.. _save-result-examples:
+
+Saving intermediate files
++++++++++++++++++++++++++
+
+As explained in :ref:`httomo-saving`, by default, HTTomo will *not* write the
+output of a method to a file unless under certain conditions (please see the
+link for a description of these file-saving conditions).
+
+HTTomo can be informed to write or not write the output of a method to a file
+with the :code:`save_result` parameter. Its value is a boolean, so either
+:code:`True` or :code:`False` are valid values for it.
+
+
+Example 1: save output of a specific method
+###########################################
+
+Suppose we wanted to save the output of the normalisation function :code:`normalize`. Then we 
+should add :code:`save_result: True` to the list of the function parameters, but NOT the method's parameters:
+
+.. code-block:: yaml
+  :emphasize-lines: 8
+
+  - method: normalize
+    module_path: httomolibgpu.prep.normalize
+    parameters:
+      cutoff: 10.0
+      minus_log: true
+      nonnegativity: false
+      remove_nans: false
+    save_result: True
+
+Example 2: using :code:`--save_all` and :code:`save_result` together
+####################################################################
+
+When the :code:`--save_all` option/flag is provided, the :code:`save_result`
+parameter can be used to override individual method's to *not* save their
+output.
+
+In contrast to the previous example, suppose we had a process list where we
+would like to save the output of all methods using :code:`--save_all`, *apart* from the
+:code:`normalize` method. 
+
+.. code-block:: yaml
+  :emphasize-lines: 8
+
+  - method: normalize
+    module_path: httomolibgpu.prep.normalize
+    parameters:
+      cutoff: 10.0
+      minus_log: true
+      nonnegativity: false
+      remove_nans: false
+    save_result: False
\ No newline at end of file
diff --git a/docs/source/howto/process_lists/side_outputs/side_out.rst b/docs/source/howto/process_lists/side_outputs/side_out.rst
new file mode 100644
index 000000000..ab96f2adf
--- /dev/null
+++ b/docs/source/howto/process_lists/side_outputs/side_out.rst
@@ -0,0 +1,118 @@
+.. _side_output:
+
+Side outputs
+++++++++++++
+
+There are cases where the output of a method is needed as the value of a parameter
+for a method further down the pipeline. For example, the output of a method that
+calculates the :ref:`centering`, that is required for a reconstruction method.
+
+HTTomo provides a special syntax (loosely based on the syntax for references in
+`GitHub Actions
+<https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions>`_)
+for how such an output of a method needs to be defined and how to refer to that
+special output later.
+
+Specifying the side output
+##########################
+
+The output of some methods isn't processed data, but rather supplementary
+information to be used later in the pipeline. The given term for that supplementary
+data is "side outputs", and is what the :code:`side_outputs` parameter is for. As
+an example, let us consider the following centering algorithm:
+
+.. code-block:: yaml
+  :emphasize-lines: 11,12,13
+
+  - method: find_center_vo
+    module_path: httomolibgpu.recon.rotation
+    parameters:
+      ind: null
+      smin: -50
+      smax: 50
+      srad: 6.0
+      step: 0.25
+      ratio: 0.5
+      drop: 20
+    id: centering
+    side_outputs:
+      cor: centre_of_rotation
+
+One can see that :code:`side_outputs` here includes a single value :code:`cor` with
+the :code:`centre_of_rotation` reference. The :code:`id` parameter here is needed to
+refer to the method later.
+
+Referring to the side output
+############################
+
+The purpose of :code:`side_outputs` is to refer to it later, when some method(s)
+require the contained information in the reference. Consider this example where the
+reconstruction method refers to the centering method's side outputs. The required
+information of :ref:`centering` is stored in the reference
+:code:`${{centering.side_outputs.centre_of_rotation}}`.
+
+.. code-block:: yaml
+  :emphasize-lines: 4
+
+  - method: FBP
+    module_path: httomolibgpu.recon.algorithm
+    parameters:
+      center: ${{centering.side_outputs.centre_of_rotation}}
+      filter_freq_cutoff: 0.6
+      recon_size: null
+      recon_mask_radius: null
+
+
+There could be various configurations when this reference is required from other methods as well. We present more verbose :ref:`side_output_example` below.
+
+.. note:: Side outputs and references to them are generated automatically with the
+   :ref:`utilities_yamlgenerator`. Usually there is no need to modify them when
+   editing a process list.
+
+.. _side_output_example:
+
+Example of side outputs
+#######################
+
+Pipeline overview
+=================
+
+This pipeline is for reconstructing DFoV data which needs to be stitched into the
+traditional 180 degrees data. It demonstrates three cases where a method produces
+one or more side outputs, and a method later in the pipeline references them.
+
+A rough outline of the three side outputs being used is:
+
+1. the 360 centering method produces an "overlap" value as a side output, for the
+   stitching method to use
+2. the 360 centering method also produces a CoR value as a side output, for the
+   recon method to use
+3. the stats calculator method produces a global stats value as a side output, for
+   the image saver method to use
+
+Detailed look at side outputs usage
+===================================
+
+Parameters for stitching are generated by :code:`find_center_360`, stored in side
+outputs, and then used later in the :code:`sino_360_to_180` method. The
+reconstruction method :code:`FBP` then refers to the found :ref:`centering` for the
+stitched dataset produced by :code:`find_center_360`. Finally, we also need to
+extract the global statistics for normalisation of the data using the
+:code:`calculate_stats` method when saving into images with the
+:code:`save_to_images` method.
+
+.. literalinclude:: ../../../../../tests/samples/pipeline_template_examples/pipeline_360deg_gpu2.yaml
+  :language: yaml
+  :lines: 1-71
+  :emphasize-lines: 18,19,20,21,22,23,45,50,58,59,60,71
+  :caption: Pipeline for 360 degrees scan, a double field of view (DFoV) data.
+
+Please see below for a concise description of how each of the individual side
+outputs of methods are connected to the method using them:
+
+1. :code:`find_center_360` produces a side output called :code:`overlap` that the
+   :code:`sino_360_to_180` method uses
+2. :code:`find_center_360` produces another side output called
+   :code:`centre_of_rotation` that the :code:`FBP` method uses
+3. :code:`calculate_stats` produces a side output called :code:`glob_stats` that
+   the :code:`save_to_images` method uses
diff --git a/docs/source/howto/process_lists_guide.rst b/docs/source/howto/process_lists_guide.rst
index f43a0726f..8f6800858 100644
--- a/docs/source/howto/process_lists_guide.rst
+++ b/docs/source/howto/process_lists_guide.rst
@@ -1,8 +1,48 @@
 Process Lists Guide
-**********************
+********************
+
+In this section we describe how a process list (aka pipeline) can be configured. We
+explain how to begin building and editing a process list in general using the
+pre-existing templates, and how to :ref:`howto_process_list`.
+:ref:`howto_proc_httomo_params` also play a role in defining a process list, so
+they are introduced here too.
+
+Editing process lists
+---------------------
+
+This section explains how to build a process list (see more on :ref:`explanation_process_list`) from YAML templates 
+(see more on :ref:`explanation_templates`).
+
+Given time working with HTTomo, a user will likely settle on a workflow for
+defining process list YAML files that suits their individual needs. For editing
+YAML files, we can recommend Visual Studio Code, Atom, and Notepad++ as editors
+that recognise YAML syntax out-of-the-box.
+
+As a starting point, the general process of building the pipeline can be the following:
+
+- copy+paste templates for the desired methods from the
+  :ref:`reference_templates` section
+- manually edit the parameter values within the copied template as needed. The user might want 
+  to check the documentation for the relevant method in the library itself.
+- intermittently run the :ref:`YAML checker <utilities_yamlchecker>` during
+  editing of the YAML file to detect any errors early on. It is strongly recommended to run 
+  the checker at least once when the YAML pipeline is configured and ready to be run.
+
+Methods order
+-------------
+
+Some general rules for building a process list from individual methods are the
+following:
+
+* Any process list needs to start with an :ref:`HTTomo loader<reference_loaders>`,
+  which are provided as :ref:`reference_templates`.
+* The execution order of the methods in the process list is **sequential** starting
+  from the top and ending at the bottom.
+* The exchange of additional data between methods is performed using
+  :ref:`howto_proc_httomo_params`.
 
 .. toctree::
    :maxdepth: 2
-
+   
+   process_lists/httomo_parameters
    process_lists/process_list_configure
-   process_lists/editing_process_lists
diff --git a/docs/source/howto/run_httomo.rst b/docs/source/howto/run_httomo.rst
index e45519f0b..fd4f9e030 100644
--- a/docs/source/howto/run_httomo.rst
+++ b/docs/source/howto/run_httomo.rst
@@ -282,7 +282,7 @@ This flag is only relevant only for runs which are using a pipeline that contain
 
 Understanding this flag's usage is dependent on knowledge of the concept of
 "chunks", "blocks", and "sections" within HTTomo's framework, so please refer to
-(TODO) for information on these concepts.
+:ref:`detailed_about` for information on these concepts.
 
 The notion of a block is fully utilised to increase performance when a sequence of
 two or more GPU methods are being executed. When two or more CPU methods are
diff --git a/docs/source/index.rst b/docs/source/index.rst
index 2ce99d128..2ff2a2b06 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -22,6 +22,7 @@
     howto/run_httomo
     howto/process_lists_guide
     howto/httomo_features
+    howto/interpret_logger
 
 .. _reference_content:
 
@@ -57,6 +58,7 @@
     :maxdepth: 2
 
     utilities/yaml_checker
+    utilities/yaml_generator
 
 .. _developers_content:
 
@@ -64,5 +66,5 @@
     :caption: Developers
     :maxdepth: 2
 
-    developers/yaml_generator
-    
+    developers/how_to_contribute    
+    developers/memory_calculation
diff --git a/docs/source/introduction/about.rst b/docs/source/introduction/about.rst
index f23e2e5ef..407e4a709 100644
--- a/docs/source/introduction/about.rst
+++ b/docs/source/introduction/about.rst
@@ -7,9 +7,9 @@ With the `Diamond-II  <https://www.diamond.ac.uk/Home/About/Vision/Diamond-II.ht
 need to be able to process bigger data in larger quantities and with high fidelity. With the support of modern developments in
 the field of High Performance Computing and multi-GPU processing, it is possible to enable faster data streaming and higher throughput for big data.
 
-The main concept of HTTomo is to split the data into three-dimensional (3D) chunks and process them in parallel. The speed is gained using
-the optimised I/O modules, in-memory reslicing operations using MPI protocols, and a capability of device-to-device GPU processing using the `CuPy <https://cupy.dev/>`_ library.
-HTTomo orchestrates the optimal data splitting driven by the available GPU memory, which makes possible processing and reconstruction of big data on smaller GPU cards.
+The main concept of HTTomo is to split the data into three-dimensional (3D) chunks/blocks and process them in parallel. The speed is gained using
+the optimised I/O modules, in-memory reslicing operations using MPI protocols, GPU-accelerated processing routines, and a capability of device-to-device GPU processing using the `CuPy <https://cupy.dev/>`_ library.
+HTTomo orchestrates the optimal data splitting driven by the available GPU memory, which makes possible processing and reconstruction of big data even on smaller GPU cards.
 
 .. figure::  ../_static/3d_setup.png
     :scale: 40 %
@@ -18,7 +18,12 @@ HTTomo orchestrates the optimal data splitting driven by the available GPU memor
     HTTomo is tailored to work with 3D data, here 3D parallel-beam tomographic projection data is split and sent to a cluster with multiple GPUs for processing and reconstruction. Serial processing of data is also possible.
 
 HTTomo is a User Interface (UI) package and does not contain any data processing methods, but rather utilises other libraries as `backends <https://en.wikipedia.org/wiki/Frontend_and_backend>`_.
-Please see the list of currently supported packages by HTTomo in :ref:`backends_list`. In principle, it should possible to enable any other modular
-library for data processing methods in HTTomo using :ref:`reference_templates` as a frontend interface.
+Please see the list of currently supported packages by HTTomo in :ref:`backends_list`. It should be relatively simple to integrate any other modular
+CPU/GPU Python library for data processing methods in HTTomo, please see more on that in :ref:`developers_content` section. 
 
-A complex data analysis pipelines can be built by stacking together YAML templates, which are provided at the documentation page. :ref:`tutorials_pl_templates` of ready to be used full pipelines are also provided.
+A complex data analysis pipelines can be built by stacking together provided :ref:`reference_templates` and :ref:`tutorials_pl_templates` are also provided.
+
+.. toctree::
+   :maxdepth: 2
+
+   indepth/detailed_about
diff --git a/docs/source/introduction/indepth/blocks.rst b/docs/source/introduction/indepth/blocks.rst
new file mode 100644
index 000000000..14edc3f92
--- /dev/null
+++ b/docs/source/introduction/indepth/blocks.rst
@@ -0,0 +1,119 @@
+.. _blocks_data:
+
+Blocks
+======
+
+Definition
+~~~~~~~~~~
+
+When a chunk is split into smaller pieces, these smaller pieces are called
+*blocks*.
+
+Motivation
+~~~~~~~~~~
+
+Notes on the framework's approach to data
+'''''''''''''''''''''''''''''''''''''''''
+
+HTTomo's framework has been written with the use of GPUs in mind. More
+specifically, HTTomo is geared towards filling up the available GPU memory with as
+much data as possible, within a reasonable tolerance to the limit.
+
+HTTomo's framework has also been written with the idea in mind that data, even
+after splitting into chunks, may or may not fit into GPU memory. This applies to
+both most commonly used hardware setups: compute clusters and personal machines.
+
+Similarly, data may or may not even fit into CPU memory (RAM) without splitting it
+into smaller pieces and holding only one piece in memory at a time. This also
+applies to both most commonly used hardware setups (as surprising as it may first
+sound, there is indeed the case where data not fitting in RAM can happen even with
+nodes in compute clusters!).
+
+Why split a "chunk" into smaller pieces?
+''''''''''''''''''''''''''''''''''''''''
+
+Each MPI process is associated with one GPU, and earlier it was mentioned that each
+MPI process has one chunk to work with. So, each MPI process has the task of trying
+to fit as much of its chunk into the memory of the GPU it is using, for every
+method in the pipeline.
+
+Highlighting one use-case, in order for HTTomo to be usable on personal machines as
+well as compute clusters, it's necessary to *not assume* that a single chunk can
+fit into GPU memory. For example, data of size 20GB when running with four MPI
+processes would result in chunks of size ~5GB. Compute clusters equipped with GPUs
+would likely have GPU models with memory far exceeding 5GB, and so could easily fit
+the entire 5GB chunk into GPU memory. However, a personal machine with a discrete
+GPU may only have, say, 4GB of memory; in which case, a 5GB chunk wouldn't fit in
+GPU memory.
+
+To generically handle the possibility that a single chunk may not fit into GPU
+memory (among other reasons), a chunk is split into smaller pieces. The pieces that
+a chunk is split into are called *blocks*.
+
+How are block shapes calculated?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The size of a block when splitting a chunk varies on a case-by-case basis, and is a
+calculation that the HTTomo framework performs during pipeline execution.
+
+More specifically, when a chunk is split into multiple blocks for a sequence of
+methods, each block is roughly the same shape. However, at another stage in the
+pipeline with a different sequence of methods, a chunk may be split into multiple
+blocks where the block shape is *different* to the previous block shape.
+
+The block size calculation uses information in the :ref:`library
+files<pl_library>`, as well as the GPU memory that is available at the time of
+calculation.
+
+The size of a block is mainly based on:
+
+- the GPU memory available to the process
+- a method's memory requirements (more precisely, the memory requirements of the
+  GPU methods in a section, see :ref:`info_sections` for information on what
+  "sections" are)
+
+At a high-level, the size of a block is given in terms of the number of slices that
+it contains. For example, if the data was split and distributed among the MPI
+processes as projections, then:
+
+- each process has a *chunk* of projections
+- when each process splits its chunk into *blocks*, each block will contain a
+  certain number of projection slices
+
+The analagous explanation for the sinogram case, replacing "projections" with
+"sinograms" in the above, holds true too.
+
+Blocks as the fundamental data quantity in HTTomo
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Blocks are the level at which most objects in HTTomo interact with, for example:
+
+1. loaders load individual blocks
+2. methods take individual blocks as input
+3. methods produce individual blocks as output
+
+There are indeed edge cases where a block can span the entire chunk from which it
+comes from, in which case the chunk an MPI process has and the single block from it
+have the same shape. However, as far as the framework knows, it is dealing with
+blocks.
+
+Therefore, a block could be considered as the fundamental data quantity in HTTomo's
+framework.
+
+Example
+~~~~~~~
+
+The example given in the chunks section had started with:
+
+- the input 3D data has shape :code:`(180, 128, 160)`
+- HTTomo has been executed with two MPI processes
+- each chunk has shape :code:`(90, 128, 160)`
+
+Continuing on from this, suppose that the GPU for both processes was such that only
+half of the stack of projections could fit into the GPU's memory at one time. Ie, a
+:code:`(45, 128, 160)` subset of a chunk could fit into GPU memory and no more.
+
+Each MPI process would split its chunk of shape :code:`(90, 128, 160)` into two
+*blocks* of shape :code:`(45, 128, 160)`. Very roughly speaking, after this
+splitting, each MPI process would then proceed to pass each :code:`(45, 128, 160)`
+block into the current method.
diff --git a/docs/source/introduction/indepth/chunks.rst b/docs/source/introduction/indepth/chunks.rst
new file mode 100644
index 000000000..0fefdd966
--- /dev/null
+++ b/docs/source/introduction/indepth/chunks.rst
@@ -0,0 +1,49 @@
+.. _chunks_data:
+
+Chunks
+======
+
+Definition
+~~~~~~~~~~
+
+When data is split into pieces and distributed among the MPI processes (one piece
+per process), these pieces are called *chunks*.
+
+Motivation: distributing data across MPI processes
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+HTTomo is able to run with multiple processes using MPI. The main idea is that
+HTTomo is given input data, and each process gets a subset of the input data. Thus,
+the input data is split, and each MPI process gets one piece. The pieces that the
+input data is split into are called *chunks*. So, in this terminology, each MPI
+process has one chunk to work with. (Again, the term "chunk" here shouldn't be
+confused with the hdf5 notion of a chunk!)
+
+How are chunk shapes calculated?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The chunk shape calculation is simple and is based on:
+
+- the number of MPI processes HTTomo is launched with
+- the shape of the "full data"
+
+The data is split such that each chunk is as close to the same shape as other
+chunks. If the data is being split as projections, then each MPI process gets a
+chunk with roughly the same number of projections. Similarly, if the data is being
+split as sinograms, then each MPI process gets a chunk with roughly the same number
+of sinograms.
+
+.. note:: If the data doesn't split evenly, then the MPI process with the largest
+   rank is the one that gets a chunk with the shape that's the "odd one out"
+
+Example
+~~~~~~~
+
+Consider 3D input data with shape :code:`(180, 128, 160)` (ie, 180 projections,
+where each projection has dimensions :code:`(128, 160)`), and running HTTomo with
+two MPI processes.
+
+If evenly splitting the data along the first axis of length :code:`180`, this
+results in two pieces, each with shape :code:`(90, 128, 160)`. Each piece would be
+referred to as a "chunk" in HTTomo, and each MPI process would get one of these
+:code:`(90, 128, 160)` shaped chunks.
diff --git a/docs/source/introduction/indepth/detailed_about.rst b/docs/source/introduction/indepth/detailed_about.rst
new file mode 100644
index 000000000..7e3a5a779
--- /dev/null
+++ b/docs/source/introduction/indepth/detailed_about.rst
@@ -0,0 +1,42 @@
+.. _detailed_about:
+
+Detailed concepts
++++++++++++++++++
+
+Here we present more detailed concepts of HTTomo's framework, such as,
+:ref:`info_sections`, :ref:`info_reslice`, :ref:`info_data` (:ref:`chunks_data`, :ref:`blocks_data`), :ref:`info_wrappers`,
+gpu-memory aware processing and others.
+
+.. toctree::
+   :maxdepth: 2
+   
+   sections
+   reslice
+   wrappers
+
+
+.. _info_data:
+
+Data terminology
+----------------
+
+HTTomo's framework deals with handling all the data involved in executing the
+pipeline. "Data handling" in HTTomo involves operations such as splitting data up
+into pieces, passing the pieces of data into methods, gathering data up and
+re-splitting into a different set of pieces, and more.
+
+The concept of data being split into smaller pieces is a common theme in HTTomo,
+and there naturally arose two main "levels" of data splitting. These two levels
+have been given names, as an easy way to give some context to a piece of data when
+referring to it.
+
+One level of data splitting produces a piece of data called a *chunk* (not to be
+confused with the term "chunk" used in the hdf5 data format), and the other level
+of data splitting produces a piece of data called a *block*.
+
+
+.. toctree::
+   :maxdepth: 2
+   
+   chunks
+   blocks
\ No newline at end of file
diff --git a/docs/source/introduction/indepth/reslice.rst b/docs/source/introduction/indepth/reslice.rst
new file mode 100644
index 000000000..498f023b6
--- /dev/null
+++ b/docs/source/introduction/indepth/reslice.rst
@@ -0,0 +1,21 @@
+.. _info_reslice:
+
+Re-slicing
+----------
+The re-slicing of data happens when we need to access a slice which is orthogonal to the current one. 
+In tomography, we normally work in the space of projections or in the space of sinograms. Different methods require different slicing 
+orientations, or, as we call it, a *pattern*. The change of the pattern is a **re-slice** operation or a transformation of an array by 
+re-slicing in a particular direction. For instance, from the projection space/pattern to the sinogram space/patterns, as in the figure below.
+
+.. _fig_reslice:
+.. figure::  ../../_static/reslice.png
+    :scale: 40 %
+    :alt: Reslicing procedure
+
+    The re-slicing operation for tomographic data. Here the data is resliced from the stack of projections to the stack of sinograms.
+
+In HTTomo, the re-slicing operation is performed on the CPU as we need to access all the data. Even if the pipeline consists of only GPU methods stacked together, 
+the re-slicing step will transfer the data from the GPU device to the CPU memory first. This operation can be costly for big datasets and we recommend to minimise the number of 
+re-slicing operations in your pipeline. Normally for tomographic pre-processing and reconstruction there is just one re-slice needed, please see how :ref:`howto_process_list`.
+
+.. note:: Note that when the CPU memory is not enough to perform re-slicing operation, the operation will be performed through the disk. This is substantially slower.
diff --git a/docs/source/introduction/indepth/sections.rst b/docs/source/introduction/indepth/sections.rst
new file mode 100644
index 000000000..c36afb40b
--- /dev/null
+++ b/docs/source/introduction/indepth/sections.rst
@@ -0,0 +1,63 @@
+.. _info_sections:
+
+Sections
+--------
+
+Sections is the essential element of HTTomo's framework which is related to how the I/O operations and processing of data is organised. 
+
+.. note:: The main purpose of sections is to organise the data input/output workflow, as well as, chaining together the processing elements so that the constructed pipeline is computationally efficient. 
+
+
+In order to understand how sections are formed, we give here the list of rules with examples when sections are created.
+
+.. _fig_sec1:
+.. figure::  ../../_static/sections/sections1.png
+    :scale: 40 %
+    :alt: Sections in pipelines
+
+    Here is a typical pipeline with a loader (`L`), 5 methods (`M`), and 4 data transfer operations (`T`) between methods.
+
+Sections are created when:
+
+1. :ref:`info_reslice` is needed, which is related to the change of pattern.
+2. The output of the method needs to be saved to the disk.
+3. The :ref:`side_output` is required by one of the methods.
+
+Example 1: Sections with re-slice
+=================================
+
+.. _fig_sec2:
+.. figure::  ../../_static/sections/sections2.png
+    :scale: 50 %
+    :alt: Sections in pipelines
+
+    Let us say that the pattern in methods `M`\ :sub:`1-3` is *projection* and methods in `M`\ :sub:`4-5` belong to *sinogram* pattern.
+    This will result in two sections created and also :ref:`info_reslice` operation in the data transfer `T`\ :sub:`3` layer. 
+
+Example 2 : Sections with re-slice and data saving
+==================================================
+
+.. _fig_sec3:
+.. figure::  ../../_static/sections/sections3.png
+    :scale: 50 %
+    :alt: Sections in pipelines
+
+    In addition Example 1 situation, let us assume that we want to save the result of `M`\ :sub:`2` method to the disk. 
+    This means that even though `M`\ :sub:`1-3` methods can be performed on the GPU, the data will be transferred to CPU.
+    The pipeline will be further fragmented to introduce another section, so that the data transfer `T`\ :sub:`2` layer also saves the data on the 
+    disk, as well as, taking care to return the data back on the GPU for the method `M`\ :sub:`3`. 
+
+Example 3 : Sections with side outputs
+======================================
+
+.. _fig_sec4:
+.. figure::  ../../_static/sections/sections4.png
+    :scale: 50 %
+    :alt: Sections in pipelines
+
+    Consider, again, Example 1. Here, however, `M`\ :sub:`5` requests the :ref:`side_output` of the method `M`\ :sub:`4`.
+    This, for example, can be because the reconstruction method `M`\ :sub:`5` requires the :ref:`centering` value of `M`\ :sub:`4`, where
+    this value is calculated. This divides `M`\ :sub:`4` and `M`\ :sub:`5` into separate sections. Also notice that `M`\ :sub:`1` needs the data
+    to be saved on disk, so in total, it is a pipeline with 4 sections in it. 
+
+.. note:: It can be seen that creating more sections in pipelines is to be avoided when building an efficient pipeline. Creating a section usually leads to synchronisation of all processes on the CPU and potentially, if not enough memory, through-disk operations.
diff --git a/docs/source/introduction/indepth/wrappers.rst b/docs/source/introduction/indepth/wrappers.rst
new file mode 100644
index 000000000..93e2a903f
--- /dev/null
+++ b/docs/source/introduction/indepth/wrappers.rst
@@ -0,0 +1,20 @@
+.. _info_wrappers:
+
+Method wrappers
+===============
+
+HTTomo does not contain image processing methods and uses external libraries for processing, see :ref:`backends_list`. 
+However, because methods process data in a different manner, there's a need to tell the framework what kind of processing that is. 
+
+HTTomo currently has the following wrappers: 
+
+1. The generic wrapper. Suitable when the method does not change the dimensions of the data for its output and requires one input and one output. This also can be called a filter.
+
+2. Normalisation wrapper is to deal with normalisation methods as they have supplementary data as an input (e.g. flats/darks) and one dataset as an output.
+
+3. Rotation or Centering wrapper. These are special methods to estimate :ref:`centering` automatically. The input can be quite specific, e.g. normalised sinogram or selected projections, and the output is usually a scalar. 
+
+4. Reconstruction wrapper. Reconstruction needs an additional information to be passed like angles and the centre of rotation. This is all handled by the framework in the wrapper.
+
+5. Image Saving wrapper. This wrapper is needed because no output in HTTomo is produced, we just save images to the disk.
+
diff --git a/docs/source/reference/loaders.rst b/docs/source/reference/loaders.rst
index 6edc6aa6d..cac33f659 100644
--- a/docs/source/reference/loaders.rst
+++ b/docs/source/reference/loaders.rst
@@ -3,115 +3,148 @@
 HTTomo Loaders
 --------------
 
-Ignoring darks and/or flats
-===========================
+Available Loaders
+=================
 
-There are situations where certain dark or flat fields that have been collected
-in the data need to be excluded from processing. The standard tomography loader
-in HTTomo offers the functionality to exclude darks and/or flat field images
-based on their index in the dataset they are contained in. The images can be
-excluded by specifying either:
+HTTomo currently has one loader, :code:`standard_tomo_loader`, which is geared
+towards loading "standard" tomography data collected at DLS beamlines.
 
-- Individual indices
-- A range of indices with start and stop values
+Basic Usage of the Standard Loader
+==================================
 
-This functionality is used in a process list via the :code:`ignore_darks` and
-:code:`ignore_flats` parameters.
+This loader has several parameters which are fairly self-explanatory. Other
+parameters either require some more detail to use, or have extra capabilities which
+are not obvious if one has seen only one or two simple loader configurations.
 
-To specify individual indices to exclude, use the :code:`individual` subfield,
-and to specify a range of indices to exclude, use the :code:`batch` subfield.
-These subfields can both be used at the same time to select batches of
-darks/flats as well as individual darks/flats to ignore.
+The following YAML configuration of the loader shows all the parameters needed, and
+is the standard case (ie, there's no configuration in it for special cases), so it
+serves as a good starting point:
 
-It is also possible to ignore *all* darks and/or flats by setting the value of
-either :code:`ignore_darks` or :code:`ignore_flats` to :code:`true`.
+.. code-block:: yaml
 
-Below shows some example uses of the :code:`ignore_darks` parameter, and the
-:code:`ignore_flats` parameter can be used in a similar manner.
+    - method: standard_tomo
+      module_path: httomo.data.hdf.loaders
+      parameters:
+        data_path: /entry1/tomo_entry/data/data
+        image_key_path: /entry1/tomo_entry/instrument/detector/image_key
+        rotation_angles:
+          data_path: /entry1/tomo_entry/data/rotation_angle
 
-Ignore individual darks only
-++++++++++++++++++++++++++++
+.. note:: The input data being loaded is assumed to be in hdf5/NeXuS file format,
+   in accordance with the data typically collected at a DLS beamline.
 
-.. code-block:: yaml
-  :emphasize-lines: 12-13
-
-    - httomo.data.hdf.loaders:
-        standard_tomo:
-        name: tomo
-        data_path: entry1/tomo_entry/data/data
-        image_key_path: entry1/tomo_entry/instrument/detector/image_key
-        dimension: 1
-        preview:
-            -
-            - start: 30
-              stop: 60
-            -
-        ignore_darks:
-            individual: [0, 5]
-
-Ignore all darks
-++++++++++++++++
+:code:`data_path`
++++++++++++++++++
 
-.. code-block:: yaml
-  :emphasize-lines: 12
-
-    - httomo.data.hdf.loaders:
-        standard_tomo:
-        name: tomo
-        data_path: entry1/tomo_entry/data/data
-        image_key_path: entry1/tomo_entry/instrument/detector/image_key
-        dimension: 1
-        preview:
-            -
-            - start: 30
-              stop: 60
-            -
-        ignore_darks: true
-
-Ignore individual darks and a group of darks
-++++++++++++++++++++++++++++++++++++++++++++
+The :code:`data_path` parameter is the path to the dataset in the input hdf5/NeXuS
+file containing the image data (usually, projections + darks + flats are in the
+same dataset).
 
-.. code-block:: yaml
-  :emphasize-lines: 12-16
-
-    - httomo.data.hdf.loaders:
-        standard_tomo:
-        name: tomo
-        data_path: entry1/tomo_entry/data/data
-        image_key_path: entry1/tomo_entry/instrument/detector/image_key
-        dimension: 1
-        preview:
-            -
-            - start: 30
-              stop: 60
-            -
-        ignore_darks:
-          individual: [0, 3]
-          batch:
-            - start: 5
-              stop: 10
-
-
-Ignore two groups of darks
-++++++++++++++++++++++++++
+:code:`image_key_path`
+++++++++++++++++++++++
 
-.. code-block:: yaml
-  :emphasize-lines: 12-17
-
-    - httomo.data.hdf.loaders:
-        standard_tomo:
-        name: tomo
-        data_path: entry1/tomo_entry/data/data
-        image_key_path: entry1/tomo_entry/instrument/detector/image_key
-        dimension: 1
-        preview:
-            -
-            - start: 30
-              stop: 60
-            -
-        ignore_darks:
-          batch:
-            - start: 5
-              stop: 10
-            - start: 20
-              stop: 30
+The :code:`image_key_path` parameter is the path to the dataset in the input
+hdf5/NeXuS file containing the so called "image key".
+
+.. note:: The "image key" is an array whose length is the same as the number of
+   images in the collected data. Each element has a value of 0, 1, or 2, to
+   indicate a projection (0), flat field image (1), or dark-field image (2).
+
+:code:`rotation_angles`
++++++++++++++++++++++++
+
+Typically, the rotation angle values are stored in a dataset within the input
+hdf5/NeXuS file. This dataset is usually what is provided to serve as the
+rotation angle values during processing.
+
+In such cases, the :code:`rotation_angles` parameter has two lines of
+configuration. Specifying :code:`data_path` is meaning that the rotation angles are
+indeed stored in a dataset within the input hdf5/NeXuS file, and the given path is
+the path to that dataset within the input hdf5/NeXuS file.
+
+The reason the :code:`rotation_angles` parameter isn't simply one value (a path)
+like the previously mentioned parameters is because there are situations when the
+angles dataset in the input hdf5/NeXus file doesn't exist, or cannot be used.
+
+To configure the loader to handle such cases, please refer to
+:ref:`user_defined_angles`.
+
+Data with Separate Darks and/or Flats
+=====================================
+
+It can sometimes be the case that darks and flats are written to separate
+hdf5/NeXuS files, rather than written to the same hdf5/NeXus file as the
+projections.
+
+Omitting the image key
+++++++++++++++++++++++
+
+In such cases, there is no image key dataset in the hdf5/NeXus file containing the
+projections (because there are only projections in the dataset, rather than
+projections + darks + flats, so there's no need to have an image key). Due to this,
+one difference to the previously shown configuration to handle this case is that
+the :code:`image_key_path` parameter is omitted.
+
+Loading the separate darks and flats
+++++++++++++++++++++++++++++++++++++
+
+Additionally, there is a need to specify:
+
+- the path to the hdf5/NeXuS file containing the darks/flats
+- the dataset within the given hdf5/NeXus file that contains the darks/flats data
+
+In order to specify this information for both darks and flats, there is the
+:code:`darks` and :code:`flats` parameters, see the following as an example:
+
+.. literalinclude:: ../../../tests/samples/pipeline_template_examples/DLS/03_i12_separate_darks_flats.yaml
+   :language: yaml
+   :emphasize-lines: 14-19
+
+Both parameters have two fields that needs to be specified:
+
+- :code:`file`, the path to the hdf5/NeXus file containing the darks/flats
+- :code:`data_path`, the dataset within the hdf5/NeXus file that contains the
+  darks/flats
+
+.. _user_defined_angles:
+
+Providing/Overriding Angles Data
+================================
+
+There are several situations in which overriding the angles dataset in the input
+hdf5/NeXuS file, or generating an array due to the absence of an angles dataset, is
+necessary. The loader offers the ability to specify an angles array via:
+
+- start angle
+- stop angle
+- total number of angles
+
+values by configuring the :code:`rotation_angles` parameter slightly differently
+than shown earlier.
+
+The following is reusing the same example from the separate darks/flats example,
+but is now drawing attention to the :code:`rotation_angles` parameter:
+
+
+.. literalinclude:: ../../../tests/samples/pipeline_template_examples/DLS/03_i12_separate_darks_flats.yaml
+   :language: yaml
+   :emphasize-lines: 7-11
+
+It can be seen that :code:`user_defined` has been specified instead of
+:code:`data_path`. Furthermore, there are then three fields provided:
+
+- :code:`start_angle`, which is the first angle (in degrees)
+- :code:`stop_angle`, which is the last angle (in degrees)
+- :code:`angles_total`, which is the number of angles on total to have in that
+  range, equally spaced
+
+to generate the desired angles array that HTTomo will use during pipeline
+execution.
+
+Previewing
+==========
+
+The data being loaded with the loader can be cropped/previewed prior to being
+passed along to the first method. The loader has the :code:`preview` parameter
+for configuring the cropping/previewing. Please see :ref:`previewing` for more
+details on previewing.
diff --git a/docs/source/utilities/yaml_checker.rst b/docs/source/utilities/yaml_checker.rst
index 1791d8d30..e1afdc073 100644
--- a/docs/source/utilities/yaml_checker.rst
+++ b/docs/source/utilities/yaml_checker.rst
@@ -21,69 +21,28 @@ Usage
       to the data and keys in the :code:`YAML_CONFIG` file match the paths and keys in the input file (:code:`IN_DATA`).
 
 
-For example, if you have the following as a :code:`YAML_CONFIG` file saved as :code:`config.yaml`:
-
-.. code-block:: yaml
-
-    - httomo.data.hdf.loaders:
-        standard_tomo:
-          name: tomo
-          data_path: entry1/tomo_entry/data/data
-          image_key_path: entry1/tomo_entry/instrument/detector/image_key
-          dimension: 1
-          preview:
-            -
-            -
-            -
-          pad: 0
-    - tomopy.prep.normalize:
-        normalize:
-          data_in: tomo
-          data_out: tomo
-          cutoff: null
-          averaging: mean
-    - tomopy.prep.normalize:
-        minus_log:
-          data_in: tomo
-          data_out: tomo
-    - httomolib.misc.images:
-        save_to_images:
-          data_in: tomo
-          subfolder_name: images
-          axis: 0
-          file_format: tif
-          bits: 8
-          perc_range_min: 0.0
-          perc_range_max: 100.0
-          jpeg_quality: 95
+For example, if you have the following as a :code:`YAML_CONFIG` file saved as :code:`example.yaml`:
 
+.. literalinclude:: ../../../tests/samples/pipeline_template_examples/testing/example.yaml
+   :language: yaml
 
 And you run the YAML checker with:
 
 .. code-block:: console
 
-   $ python -m httomo check config.yaml
+   $ python -m httomo check example.yaml
 
 
 You will get the following output:
 
 .. code-block:: console
 
-    Checking that YAML_CONFIG includes only one method from each module...
-
-    Doing a sanity check first...
     Checking that the YAML_CONFIG is properly indented and has valid mappings and tags...
     Sanity check of the YAML_CONFIG was successfully done...
 
-    'One method per module' check was also successfully done...
-
     Checking that the first method in the pipeline is a loader...
     Loader check successful!!
 
-    Checking 'standard_tomo' and its parameters...
-    Checking 'normalize' and its parameters...
-    Checking 'minus_log' and its parameters...
-    Checking 'save_to_images' and its parameters...
 
     YAML validation successful!! Please feel free to use the `run` command to run the pipeline.
 
@@ -93,45 +52,23 @@ It also included valid parameters for each method used from TomoPy, HTTomolib, o
 
 
 
-But if you had the following as a :code:`YAML_CONFIG` file saved as :code:`config.yaml`:
+But if you had the following as a :code:`YAML_CONFIG` file saved as :code:`incorrect_method.yaml`:
 
-.. code-block:: yaml
-
-    - httomo.data.hdf.loaders:
-        standard_tomo:
-          name: tomo
-          data_path: entry1/tomo_entry/data/data
-          image_key_path: entry1/tomo_entry/instrument/detector/image_key
-          preview:
-            -
-            - start: 30
-              stop: 60
-            -
-          pad: 0
-    - tomopy.misc.corr:
-        median_filters:
-          data: tomo
-          data_out: tomo
-          size: tomo
-          axis: 0
+.. literalinclude:: ../../../tests/samples/pipeline_template_examples/testing/incorrect_method.yaml
+   :language: yaml
 
 And then you run the YAML checker, you get:
 
 .. code-block:: console
 
-    $ python -m httomo check config.yaml
-    Checking that YAML_CONFIG includes only one method from each module...
-
-    Doing a sanity check first...
+    $ python -m httomo check incorrect_method.yaml
     Checking that the YAML_CONFIG is properly indented and has valid mappings and tags...
     Sanity check of the YAML_CONFIG was successfully done...
 
-    'One method per module' check was also successfully done...
-
     Checking that the first method in the pipeline is a loader...
     Loader check successful!!
 
-    'tomopy.misc.corr/median_filters' is not a valid path to a method. Please recheck the yaml file.
+    'tomopy.misc.corr/median_filters' is not a valid method. Please recheck the yaml file.
 
 
 This is because :code:`median_filters` is not a valid method in TomoPy -- should be :code:`median_filter`.
@@ -145,39 +82,15 @@ What else do we check with the YAML checker?
 
 For instance, we cannot have the following in a YAML file:
 
-.. code-block:: yaml
-
-    - httomo.data.hdf.loaders:
-        standard_tomo:
-            name: tomo
-          data_path: /entry1/tomo_entry/data/data
-          image_key_path: /entry1/tomo_entry/instrument/detector/image_key
-          dimension: 1
-          pad: 0
+.. literalinclude:: ../../../tests/samples/pipeline_template_examples/testing/wrong_indentation_pipeline.yaml
+   :language: yaml
 
 This will raise a warning because :code:`name` is not in the same indentation level as :code:`data_path` and :code:`image_key_path`.
 
-* We also check that the tags are valid.
-
-For example, we have the :code:`!Sweep` functionality in HTTomo. If you make a typo,
-it will raise an error.
-
 * We check that the first method in the pipeline is always a loader from :code:`'httomo.data.hdf.loaders'`.
-* The following will raise an error because if two methods that are adjacent in a pipeline happen to be from the same package, you cannot omit the package name from the second method's config and you must still provide it.
-
-.. code-block:: yaml
-
-    - tomopy.prep.normalize:
-        normalize:
-          data_in: tomo
-          data_out: tomo
-          cutoff: null
-        minus_log:
-          data_in: tomo
-          data_out: tomo
-
+* We check methods exist for the given module path.
 * We check that the parameters for each method are valid. For example, :code:`find_center_vo` method from :code:`tomopy.recon.rotation` takes :code:`ratio` as a parameter with a float value. If you pass a string instead, it will raise an error. Again the trick is to refer the documentation always.
-
+* We check the required parameters for each method are present.
 * If you pass :code:`IN_DATA` (path to the data) along with the yaml config, as:
 
 .. code-block:: console
@@ -188,38 +101,21 @@ That will check that the paths to the data and keys in the :code:`YAML_CONFIG` f
 
 If you have the following loader in your yaml file:
 
-.. code-block:: yaml
+.. literalinclude:: ../../../tests/samples/pipeline_template_examples/testing/incorrect_path.yaml
+   :language: yaml
 
-    - httomo.data.hdf.loaders:
-        standard_tomo:
-          name: tomo
-          data_path: entry1/tomo_entry/data/
-          image_key_path: entry1/tomo_entry/instrument/detector/image_key
-          preview:
-            -
-            - start: 30
-              stop: 60
-            -
-          pad: 0
-
-And you pass it with standard tomo data, it will raise an error because the paths do not match:
+And you provide that, together with the standard tomo data, it will raise an error because the image path does not match:
 
 .. code-block:: console
 
-    Checking that YAML_CONFIG includes only one method from each module...
-
-    Doing a sanity check first...
     Checking that the YAML_CONFIG is properly indented and has valid mappings and tags...
     Sanity check of the YAML_CONFIG was successfully done...
 
-    'One method per module' check was also successfully done...
-
     Checking that the first method in the pipeline is a loader...
     Loader check successful!!
 
     Checking that the paths to the data and keys in the YAML_CONFIG file match the paths and keys in the input file (IN_DATA)...
-    'entry1/tomo_entry/data' is not a valid path to a dataset in YAML_CONFIG. Please recheck the yaml file.
-
+    'entry1/tomo_entry/instrument/detect/image_key' is not a valid path to a dataset in YAML_CONFIG. Please recheck the yaml file.
 
 We have many other checks and are constantly improving the YAML checker to make it more robust, verbose, and user-friendly.
 This is a user-interface so suggestions are always welcome.
diff --git a/docs/source/utilities/yaml_generator.rst b/docs/source/utilities/yaml_generator.rst
new file mode 100644
index 000000000..f0adeb10f
--- /dev/null
+++ b/docs/source/utilities/yaml_generator.rst
@@ -0,0 +1,33 @@
+.. _utilities_yamlgenerator:
+
+Templates generator
+*******************
+:ref:`backends_content` can be generated automatically using the YAML generator tool `provided <https://github.com/DiamondLightSource/httomo/tree/main/httomo/yaml_templates_generator.py>`_ in the Github repo. 
+
+The script does the following: 
+
+* Generates a list of YAML files for all accessible on import methods in a chosen software package, e.g., TomoPy.
+* Modifies and/or removes some extracted parameters in YAML templates to make the templates compatible with HTTomo.
+ 
+How does it work:
+
+* The user would need to provide a YAML file with the listed *modules* you would like to inspect and extract the methods from. For instance, for the TomoPy package this would be:
+
+.. code-block:: yaml
+
+    - tomopy.misc.corr
+    - tomopy.misc.morph
+
+* The generator can be applied using the following command:
+ 
+.. code-block:: console
+   
+   $ python -m yaml_templates_generator -i /path/to/modules.yaml -o /path/to/outputfolder/
+
+Please note that the package from which the modules are extracted, must be installed into your conda environment.
+
+**For TomoPy templates only.** After templates have been generated for TomoPy, we need to remove the ones that are not currently supported by HTTomo. We do that by looking into the library file that exists in HTTomo for TomoPy.
+ 
+.. code-block:: console
+   
+   $ python -m remove_unsupported_templates -t /path/to/templates/ -l /path/to/library/file
\ No newline at end of file
diff --git a/docs/source/yaml_doc_generator.py b/docs/source/yaml_doc_generator.py
index 3bf212592..b998e11d6 100644
--- a/docs/source/yaml_doc_generator.py
+++ b/docs/source/yaml_doc_generator.py
@@ -37,7 +37,7 @@ def add_function_summary(doc_dir, root, files):
         if os.stat(doc_rst_file).st_size == 0:
             rst_name = root.split("/")[-1]
             add_title(edit_doc, rst_name)
-            add_tomopy_link(edit_doc, rst_name)
+            add_backend_link(edit_doc, rst_name)
         else:
             edit_doc.write(f"\n\n   .. rubric:: **Functions**")
             edit_doc.write(f"\n\n   .. autosummary::\n")
@@ -115,8 +115,8 @@ def add_title(edit_doc, rst_name):
     edit_doc.write(f"{underline}\n")
 
 
-def add_tomopy_link(edit_doc, rst_name):
-    """Link to tomopy documentation.
+def add_backend_link(edit_doc, rst_name):
+    """Links to backends documentation.
 
     Parameters
     ----------
@@ -127,8 +127,14 @@ def add_tomopy_link(edit_doc, rst_name):
     """
     if "tomopy" in rst_name:
         # If it is a tomopy module, insert a link.
-        url = "https://tomopy.readthedocs.io/en/v1.14.0/api/"
-        edit_doc.write(f"\n{url}{rst_name}.html\n\n")
+        url = "https://tomopy.readthedocs.io/en/stable/api/"
+    elif "httomolibgpu" in rst_name:
+        url = "https://diamondlightsource.github.io/httomolibgpu/api/"
+    elif "httomolib" in rst_name:
+        url = "https://diamondlightsource.github.io/httomolib/api/"
+    else:
+        raise ValueError("The name of the backend package is not recognised")
+    edit_doc.write(f"\n{url}{rst_name}.html\n\n")
 
 
 def save_all_yaml_functions(tmp_dir, yaml_files):
@@ -155,12 +161,10 @@ def save_all_yaml_functions(tmp_dir, yaml_files):
     Append the yaml information to the documentation pages.
     """
     doc_source_dir = os.path.dirname(os.path.abspath(__file__))
-    path_to_templates = doc_source_dir + "/../../yaml_templates/"
+    path_to_templates = doc_source_dir + "/../build/yaml_templates/"
     for root, dirs, files in os.walk(path_to_templates, topdown=True):
         dirs[:] = [d for d in dirs]
         files[:] = [fi for fi in files if ".yaml" in fi]
-        # Don't include the module list on the documentation pages
-        files[:] = [fi for fi in files if "modules" not in fi]
         if files:
             add_function_summary(doc_source_dir, root, files)
             save_all_yaml_functions(root, files)
diff --git a/docs/sphinx-build.sh b/docs/sphinx-build.sh
index fa272eff2..795df6a75 100644
--- a/docs/sphinx-build.sh
+++ b/docs/sphinx-build.sh
@@ -27,6 +27,11 @@ rm -rf $DIR/build/
 # sphinx-apidoc generates source files that use sphinx.ext.autodoc to document all found modules
 sphinx-apidoc -feT -t=$DIR/source/_templates -o $DIR/source/api $DIR/../httomo
 
+# build yaml templates here:
+python $DIR/../httomo/yaml_templates_generator.py -i $DIR/../httomo/methods_database/packages/external/tomopy/tomopy_modules.yaml -o $DIR/build/yaml_templates/tomopy
+python $DIR/../httomo/yaml_unsupported_tomopy_remove.py -t $DIR/build/yaml_templates/tomopy -l $DIR/../httomo/methods_database/packages/external/tomopy/tomopy.yaml
+python $DIR/../httomo/yaml_templates_generator.py -i $DIR/../httomo/methods_database/packages/external/httomolibgpu/httomolibgpu_modules.yaml -o $DIR/build/yaml_templates/httomolibgpu
+python $DIR/../httomo/yaml_templates_generator.py -i $DIR/../httomo/methods_database/packages/external/httomolib/httomolib_modules.yaml -o $DIR/build/yaml_templates/httomolib
 
 # Append yaml link to rst files
 python -m source.yaml_doc_generator
diff --git a/yaml_templates/httomolib/httomolib_modules.yaml b/httomo/methods_database/packages/external/httomolib/httomolib_modules.yaml
similarity index 100%
rename from yaml_templates/httomolib/httomolib_modules.yaml
rename to httomo/methods_database/packages/external/httomolib/httomolib_modules.yaml
diff --git a/yaml_templates/httomolibgpu/httomolibgpu_modules.yaml b/httomo/methods_database/packages/external/httomolibgpu/httomolibgpu_modules.yaml
similarity index 99%
rename from yaml_templates/httomolibgpu/httomolibgpu_modules.yaml
rename to httomo/methods_database/packages/external/httomolibgpu/httomolibgpu_modules.yaml
index d9eefb585..2722392e7 100644
--- a/yaml_templates/httomolibgpu/httomolibgpu_modules.yaml
+++ b/httomo/methods_database/packages/external/httomolibgpu/httomolibgpu_modules.yaml
@@ -5,5 +5,6 @@
 - httomolibgpu.prep.normalize
 - httomolibgpu.prep.phase
 - httomolibgpu.prep.stripe
-- httomolibgpu.recon.rotation
 - httomolibgpu.recon.algorithm
+- httomolibgpu.recon.rotation
+
diff --git a/httomo/methods_database/packages/external/tomopy/tomopy.yaml b/httomo/methods_database/packages/external/tomopy/tomopy.yaml
index 0b95105fb..0d4242009 100644
--- a/httomo/methods_database/packages/external/tomopy/tomopy.yaml
+++ b/httomo/methods_database/packages/external/tomopy/tomopy.yaml
@@ -1,4 +1,3 @@
-# TomoPy version 1.14
 sim:
   project:
     add_drift:
diff --git a/yaml_templates/tomopy/tomopy_modules.yaml b/httomo/methods_database/packages/external/tomopy/tomopy_modules.yaml
similarity index 100%
rename from yaml_templates/tomopy/tomopy_modules.yaml
rename to httomo/methods_database/packages/external/tomopy/tomopy_modules.yaml
diff --git a/httomo/methods_database/packages/external/versions.yaml b/httomo/methods_database/packages/external/versions.yaml
deleted file mode 100644
index df240e53d..000000000
--- a/httomo/methods_database/packages/external/versions.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-# This file covers the currently supported versions of external packages
-tomopy:
-  - 1.15
-httomolib:
-  - 2.0
-httomolibgpu:
-  - 2.0
diff --git a/httomo/yaml_checker.py b/httomo/yaml_checker.py
index 92286b3c9..35f16c75d 100644
--- a/httomo/yaml_checker.py
+++ b/httomo/yaml_checker.py
@@ -1,6 +1,7 @@
 """
 Module for checking the validity of yaml files.
 """
+
 import os
 from typing import Any, Dict, Iterator, List, Optional, TypeAlias
 
@@ -10,6 +11,7 @@
 from pathlib import Path
 
 from httomo.yaml_utils import get_packages_current_version
+
 from httomo.ui_layer import (
     get_regex_pattern,
     get_ref_split,
@@ -255,7 +257,7 @@ def check_keys(conf: PipelineConfig) -> bool:
 
 
 def check_id_has_side_out(conf: PipelineConfig) -> bool:
-    """ Check method with an id has side outputs"""
+    """Check method with an id has side outputs"""
     method_ids = [m.get("side_outputs") for m in conf if m.get("id")]
     if None in method_ids:
         _print_with_colour(f"A method with an id has no side outputs defined.")
@@ -264,7 +266,7 @@ def check_id_has_side_out(conf: PipelineConfig) -> bool:
 
 
 def check_ref_id_valid(conf: PipelineConfig) -> bool:
-    """ Check reference str is matching a valid method id"""
+    """Check reference str is matching a valid method id"""
     pattern = get_regex_pattern()
     method_ids = [m.get("id") for m in conf if m.get("id")]
     ref_strs = {
@@ -283,7 +285,7 @@ def check_ref_id_valid(conf: PipelineConfig) -> bool:
 
 
 def check_side_out_matches_ref_arg(conf: PipelineConfig) -> bool:
-    """ Check reference name exists """
+    """Check reference name exists"""
     pattern = get_regex_pattern()
     ref_strs = {
         k: v
@@ -335,14 +337,7 @@ def _get_package_info(conf: PipelineConfig) -> List:
     Helper function to get packages from module path.
     """
     modules = [m["module_path"] for m in conf]
-    packages = [
-        m.split(".")[0] + "/" + get_packages_current_version(m.split(".")[0])
-        if m.split(".")[0] != "httomo"
-        else m.split(".")[0]
-        + "/"
-        + get_packages_current_version(m.split(".")[0], type_p="httomo")
-        for m in modules
-    ]
+    packages = [m.split(".")[0] for m in modules]
     return packages
 
 
@@ -353,7 +348,9 @@ def _get_template_yaml(conf: PipelineConfig, packages: List) -> List:
     """
     parent_dir = Path(__file__).parent.parent
     templates_dir = os.path.join(parent_dir, "yaml_templates")
-    assert os.path.exists(templates_dir), "Dev error: expected YAML templates dir to exist"
+    assert os.path.exists(
+        templates_dir
+    ), "Dev error: expected YAML templates dir to exist"
     return [
         os.path.join(
             templates_dir,
diff --git a/yaml_templates/yaml_templates_generator.py b/httomo/yaml_templates_generator.py
similarity index 94%
rename from yaml_templates/yaml_templates_generator.py
rename to httomo/yaml_templates_generator.py
index 50996a3f8..36b4502f5 100644
--- a/yaml_templates/yaml_templates_generator.py
+++ b/httomo/yaml_templates_generator.py
@@ -22,7 +22,7 @@
 """Script that exposes all functions of a given software package as YAML templates.
 
 Please run the generator as:
-    python -m yaml_templates_generator -m /path/to/modules.yml -o /path/to/output/
+    python -m yaml_templates_generator -i /path/to/modules.yml -o /path/to/output/
 """
 import argparse
 import importlib
@@ -61,13 +61,18 @@ def yaml_generator(path_to_modules: str, output_folder: str) -> int:
         try:
             imported_module = importlib.import_module(str(module_name))
         except NameError:
-            print("Import of the module has failed, check if software installed")
+            print(
+                "Import of the module {} has failed, check if software installed".format(
+                    module_name
+                )
+            )
         methods_list = imported_module.__all__  # get all the methods in the module
         methods_no = len(methods_list)
 
         # a loop over all methods in the module
         for m in range(methods_no):
             method_name = methods_list[m]
+            print("Inspecting the signature of the {} method".format(method_name))
             get_method_params = inspect.signature(
                 getattr(imported_module, methods_list[m])
             )
@@ -214,8 +219,8 @@ def get_args():
         "of a given software package as YAML templates."
     )
     parser.add_argument(
-        "-m",
-        "--modules",
+        "-i",
+        "--input",
         type=str,
         default=None,
         help="A path to the list of modules yaml file"
@@ -234,8 +239,8 @@ def get_args():
 if __name__ == "__main__":
     current_dir = os.path.basename(os.path.abspath(os.curdir))
     args = get_args()
-    path_to_modules = args.modules
+    path_to_modules = args.input
     output_folder = args.output
     return_val = yaml_generator(path_to_modules, output_folder)
     if return_val == 0:
-        print("The methods as YAML templates have been succesfully generated!")
+        print("The methods as YAML templates have been successfully generated!")
diff --git a/yaml_templates/tomopy/remove_unsupported_templates.py b/httomo/yaml_unsupported_tomopy_remove.py
similarity index 100%
rename from yaml_templates/tomopy/remove_unsupported_templates.py
rename to httomo/yaml_unsupported_tomopy_remove.py
diff --git a/httomo/yaml_utils.py b/httomo/yaml_utils.py
deleted file mode 100644
index 3b5cf1ba0..000000000
--- a/httomo/yaml_utils.py
+++ /dev/null
@@ -1,25 +0,0 @@
-from pathlib import Path
-
-import yaml
-
-
-def get_packages_current_version(package: str, type_p: str = "external") -> str:
-    """
-    Get the current version of the package.
-    'external' points to  httomo/methods_database/packages/external/versions.yaml
-    'httomo' points to httomo/methods_database/packages/external/versions.yaml
-    """
-    if type_p == "external":
-        type_p = "methods_database/packages/external/versions.yaml"
-    elif type_p == "httomo":
-        type_p = "methods_database/packages/version.yaml"
-    else:
-        raise ValueError(
-            "The accepted type of packages is only 'external' and 'httomo'"
-        )
-
-    versions_file = Path(__file__).parent / type_p
-    with open(versions_file, "r") as f:
-        versions = yaml.safe_load(f)
-
-    return str(versions[package][0])
diff --git a/yaml_templates/all_templates_httomo_v2_0.zip b/yaml_templates/all_templates_httomo_v2_0.zip
deleted file mode 100644
index c0015adad..000000000
Binary files a/yaml_templates/all_templates_httomo_v2_0.zip and /dev/null differ
diff --git a/yaml_templates/httomo/2.0/httomo.data.hdf.loaders/standard_tomo.yaml b/yaml_templates/httomo/httomo.data.hdf.loaders/standard_tomo.yaml
similarity index 100%
rename from yaml_templates/httomo/2.0/httomo.data.hdf.loaders/standard_tomo.yaml
rename to yaml_templates/httomo/httomo.data.hdf.loaders/standard_tomo.yaml
diff --git a/yaml_templates/httomo/2.0/httomo.methods/calculate_stats.yaml b/yaml_templates/httomo/httomo.methods/calculate_stats.yaml
similarity index 100%
rename from yaml_templates/httomo/2.0/httomo.methods/calculate_stats.yaml
rename to yaml_templates/httomo/httomo.methods/calculate_stats.yaml
diff --git a/yaml_templates/httomolib/2.0/httomolib.misc.images/save_to_images.yaml b/yaml_templates/httomolib/httomolib.misc.images/save_to_images.yaml
similarity index 95%
rename from yaml_templates/httomolib/2.0/httomolib.misc.images/save_to_images.yaml
rename to yaml_templates/httomolib/httomolib.misc.images/save_to_images.yaml
index 047d0c372..d26cb3d30 100644
--- a/yaml_templates/httomolib/2.0/httomolib.misc.images/save_to_images.yaml
+++ b/yaml_templates/httomolib/httomolib.misc.images/save_to_images.yaml
@@ -9,4 +9,5 @@
     perc_range_max: 100.0
     jpeg_quality: 95
     glob_stats: ${{statistics.side_outputs.glob_stats}}
+    offset: 0
     asynchronous: true
diff --git a/yaml_templates/httomolib/2.0/httomolib.misc.morph/data_reducer.yaml b/yaml_templates/httomolib/httomolib.misc.morph/data_reducer.yaml
similarity index 85%
rename from yaml_templates/httomolib/2.0/httomolib.misc.morph/data_reducer.yaml
rename to yaml_templates/httomolib/httomolib.misc.morph/data_reducer.yaml
index e449ef6d2..293e8b255 100644
--- a/yaml_templates/httomolib/2.0/httomolib.misc.morph/data_reducer.yaml
+++ b/yaml_templates/httomolib/httomolib.misc.morph/data_reducer.yaml
@@ -1,5 +1,5 @@
 - method: data_reducer
   module_path: httomolib.misc.morph
   parameters:
-    axis: 0
+    axis: auto
     method: mean
diff --git a/yaml_templates/httomolib/2.0/httomolib.misc.segm/binary_thresholding.yaml b/yaml_templates/httomolib/httomolib.misc.segm/binary_thresholding.yaml
similarity index 100%
rename from yaml_templates/httomolib/2.0/httomolib.misc.segm/binary_thresholding.yaml
rename to yaml_templates/httomolib/httomolib.misc.segm/binary_thresholding.yaml
diff --git a/yaml_templates/httomolib/2.0/httomolib.prep.phase/paganin_filter.yaml b/yaml_templates/httomolib/httomolib.prep.phase/paganin_filter.yaml
similarity index 100%
rename from yaml_templates/httomolib/2.0/httomolib.prep.phase/paganin_filter.yaml
rename to yaml_templates/httomolib/httomolib.prep.phase/paganin_filter.yaml
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.misc.corr/download_all.yaml b/yaml_templates/httomolibgpu/2.0/httomolibgpu.misc.corr/download_all.yaml
deleted file mode 100644
index 6fafef62b..000000000
--- a/yaml_templates/httomolibgpu/2.0/httomolibgpu.misc.corr/download_all.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-- method: remove_outlier
-  module_path: httomolibgpu.misc.corr
-  parameters:
-    kernel_size: 3
-    axis: auto
-    dif: 0.1
-- method: median_filter
-  module_path: httomolibgpu.misc.corr
-  parameters:
-    kernel_size: 3
-    axis: auto
-    dif: 0.0
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.misc.morph/download_all.yaml b/yaml_templates/httomolibgpu/2.0/httomolibgpu.misc.morph/download_all.yaml
deleted file mode 100644
index 1d7bb3d86..000000000
--- a/yaml_templates/httomolibgpu/2.0/httomolibgpu.misc.morph/download_all.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-- method: sino_360_to_180
-  module_path: httomolibgpu.misc.morph
-  parameters:
-    overlap: ${{centering.side_outputs.overlap}}
-    rotation: left
-- method: data_resampler
-  module_path: httomolibgpu.misc.morph
-  parameters:
-    newshape: REQUIRED
-    axis: auto
-    interpolation: linear
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.alignment/distortion_correction_proj.yaml b/yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.alignment/distortion_correction_proj.yaml
deleted file mode 100644
index 869ee8c53..000000000
--- a/yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.alignment/distortion_correction_proj.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-- method: distortion_correction_proj
-  module_path: httomolibgpu.prep.alignment
-  parameters:
-    metadata_path: REQUIRED
-    preview: REQUIRED
-    center_from_left: null
-    center_from_top: null
-    polynomial_coeffs: null
-    crop: 0
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.alignment/download_all.yaml b/yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.alignment/download_all.yaml
deleted file mode 100644
index 9bc2607dc..000000000
--- a/yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.alignment/download_all.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-- method: distortion_correction_proj_discorpy
-  module_path: httomolibgpu.prep.alignment
-  parameters:
-    metadata_path: REQUIRED
-    preview: REQUIRED
-    order: 1
-    mode: reflect
-- method: distortion_correction_proj
-  module_path: httomolibgpu.prep.alignment
-  parameters:
-    metadata_path: REQUIRED
-    preview: REQUIRED
-    center_from_left: null
-    center_from_top: null
-    polynomial_coeffs: null
-    crop: 0
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.phase/download_all.yaml b/yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.phase/download_all.yaml
deleted file mode 100644
index 0f08fd445..000000000
--- a/yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.phase/download_all.yaml
+++ /dev/null
@@ -1,18 +0,0 @@
-- method: paganin_filter_tomopy
-  module_path: httomolibgpu.prep.phase
-  parameters:
-    pixel_size: 0.0001
-    dist: 50.0
-    energy: 53.0
-    alpha: 0.001
-- method: paganin_filter_savu
-  module_path: httomolibgpu.prep.phase
-  parameters:
-    ratio: 250.0
-    energy: 53.0
-    distance: 1.0
-    resolution: 1.28
-    pad_y: 100
-    pad_x: 100
-    pad_method: edge
-    increment: 0.0
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.stripe/download_all.yaml b/yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.stripe/download_all.yaml
deleted file mode 100644
index 50bfc0c50..000000000
--- a/yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.stripe/download_all.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-- method: remove_stripe_based_sorting
-  module_path: httomolibgpu.prep.stripe
-  parameters:
-    size: 11
-    dim: 1
-- method: remove_stripe_ti
-  module_path: httomolibgpu.prep.stripe
-  parameters:
-    beta: 0.1
-- method: remove_all_stripe
-  module_path: httomolibgpu.prep.stripe
-  parameters:
-    snr: 3.0
-    la_size: 61
-    sm_size: 21
-    dim: 1
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.recon.algorithm/download_all.yaml b/yaml_templates/httomolibgpu/2.0/httomolibgpu.recon.algorithm/download_all.yaml
deleted file mode 100644
index f1cb7b501..000000000
--- a/yaml_templates/httomolibgpu/2.0/httomolibgpu.recon.algorithm/download_all.yaml
+++ /dev/null
@@ -1,21 +0,0 @@
-- method: SIRT
-  module_path: httomolibgpu.recon.algorithm
-  parameters:
-    center: ${{centering.side_outputs.centre_of_rotation}}
-    recon_size: null
-    iterations: 300
-    nonnegativity: true
-- method: CGLS
-  module_path: httomolibgpu.recon.algorithm
-  parameters:
-    center: ${{centering.side_outputs.centre_of_rotation}}
-    recon_size: null
-    iterations: 20
-    nonnegativity: true
-- method: FBP
-  module_path: httomolibgpu.recon.algorithm
-  parameters:
-    center: ${{centering.side_outputs.centre_of_rotation}}
-    filter_freq_cutoff: 0.6
-    recon_size: null
-    recon_mask_radius: null
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.recon.rotation/download_all.yaml b/yaml_templates/httomolibgpu/2.0/httomolibgpu.recon.rotation/download_all.yaml
deleted file mode 100644
index e485e7ba7..000000000
--- a/yaml_templates/httomolibgpu/2.0/httomolibgpu.recon.rotation/download_all.yaml
+++ /dev/null
@@ -1,38 +0,0 @@
-- method: find_center_360
-  module_path: httomolibgpu.recon.rotation
-  parameters:
-    ind: null
-    win_width: 10
-    side: null
-    denoise: true
-    norm: false
-    use_overlap: false
-  id: centering
-  side_outputs:
-    cor: centre_of_rotation
-    overlap: overlap
-    side: side
-    overlap_position: overlap_position
-- method: find_center_vo
-  module_path: httomolibgpu.recon.rotation
-  parameters:
-    ind: null
-    smin: -50
-    smax: 50
-    srad: 6.0
-    step: 0.25
-    ratio: 0.5
-    drop: 20
-  id: centering
-  side_outputs:
-    cor: centre_of_rotation
-- method: find_center_pc
-  module_path: httomolibgpu.recon.rotation
-  parameters:
-    proj1: auto
-    proj2: auto
-    tol: 0.5
-    rotc_guess: null
-  id: centering
-  side_outputs:
-    cor: centre_of_rotation
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.misc.corr/median_filter.yaml b/yaml_templates/httomolibgpu/httomolibgpu.misc.corr/median_filter.yaml
similarity index 100%
rename from yaml_templates/httomolibgpu/2.0/httomolibgpu.misc.corr/median_filter.yaml
rename to yaml_templates/httomolibgpu/httomolibgpu.misc.corr/median_filter.yaml
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.misc.corr/remove_outlier.yaml b/yaml_templates/httomolibgpu/httomolibgpu.misc.corr/remove_outlier.yaml
similarity index 100%
rename from yaml_templates/httomolibgpu/2.0/httomolibgpu.misc.corr/remove_outlier.yaml
rename to yaml_templates/httomolibgpu/httomolibgpu.misc.corr/remove_outlier.yaml
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.misc.morph/data_resampler.yaml b/yaml_templates/httomolibgpu/httomolibgpu.misc.morph/data_resampler.yaml
similarity index 100%
rename from yaml_templates/httomolibgpu/2.0/httomolibgpu.misc.morph/data_resampler.yaml
rename to yaml_templates/httomolibgpu/httomolibgpu.misc.morph/data_resampler.yaml
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.misc.morph/sino_360_to_180.yaml b/yaml_templates/httomolibgpu/httomolibgpu.misc.morph/sino_360_to_180.yaml
similarity index 100%
rename from yaml_templates/httomolibgpu/2.0/httomolibgpu.misc.morph/sino_360_to_180.yaml
rename to yaml_templates/httomolibgpu/httomolibgpu.misc.morph/sino_360_to_180.yaml
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.misc.rescale/rescale_to_int.yaml b/yaml_templates/httomolibgpu/httomolibgpu.misc.rescale/rescale_to_int.yaml
similarity index 100%
rename from yaml_templates/httomolibgpu/2.0/httomolibgpu.misc.rescale/rescale_to_int.yaml
rename to yaml_templates/httomolibgpu/httomolibgpu.misc.rescale/rescale_to_int.yaml
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.alignment/distortion_correction_proj_discorpy.yaml b/yaml_templates/httomolibgpu/httomolibgpu.prep.alignment/distortion_correction_proj_discorpy.yaml
similarity index 100%
rename from yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.alignment/distortion_correction_proj_discorpy.yaml
rename to yaml_templates/httomolibgpu/httomolibgpu.prep.alignment/distortion_correction_proj_discorpy.yaml
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.normalize/normalize.yaml b/yaml_templates/httomolibgpu/httomolibgpu.prep.normalize/normalize.yaml
similarity index 87%
rename from yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.normalize/normalize.yaml
rename to yaml_templates/httomolibgpu/httomolibgpu.prep.normalize/normalize.yaml
index 66609c793..fae8feb4a 100644
--- a/yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.normalize/normalize.yaml
+++ b/yaml_templates/httomolibgpu/httomolibgpu.prep.normalize/normalize.yaml
@@ -2,6 +2,6 @@
   module_path: httomolibgpu.prep.normalize
   parameters:
     cutoff: 10.0
-    minus_log: false
+    minus_log: true
     nonnegativity: false
     remove_nans: false
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.phase/paganin_filter_savu.yaml b/yaml_templates/httomolibgpu/httomolibgpu.prep.phase/paganin_filter_savu.yaml
similarity index 100%
rename from yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.phase/paganin_filter_savu.yaml
rename to yaml_templates/httomolibgpu/httomolibgpu.prep.phase/paganin_filter_savu.yaml
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.phase/paganin_filter_tomopy.yaml b/yaml_templates/httomolibgpu/httomolibgpu.prep.phase/paganin_filter_tomopy.yaml
similarity index 100%
rename from yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.phase/paganin_filter_tomopy.yaml
rename to yaml_templates/httomolibgpu/httomolibgpu.prep.phase/paganin_filter_tomopy.yaml
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.stripe/remove_all_stripe.yaml b/yaml_templates/httomolibgpu/httomolibgpu.prep.stripe/remove_all_stripe.yaml
similarity index 100%
rename from yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.stripe/remove_all_stripe.yaml
rename to yaml_templates/httomolibgpu/httomolibgpu.prep.stripe/remove_all_stripe.yaml
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.stripe/remove_stripe_based_sorting.yaml b/yaml_templates/httomolibgpu/httomolibgpu.prep.stripe/remove_stripe_based_sorting.yaml
similarity index 100%
rename from yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.stripe/remove_stripe_based_sorting.yaml
rename to yaml_templates/httomolibgpu/httomolibgpu.prep.stripe/remove_stripe_based_sorting.yaml
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.stripe/remove_stripe_ti.yaml b/yaml_templates/httomolibgpu/httomolibgpu.prep.stripe/remove_stripe_ti.yaml
similarity index 100%
rename from yaml_templates/httomolibgpu/2.0/httomolibgpu.prep.stripe/remove_stripe_ti.yaml
rename to yaml_templates/httomolibgpu/httomolibgpu.prep.stripe/remove_stripe_ti.yaml
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.recon.algorithm/CGLS.yaml b/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/CGLS.yaml
similarity index 100%
rename from yaml_templates/httomolibgpu/2.0/httomolibgpu.recon.algorithm/CGLS.yaml
rename to yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/CGLS.yaml
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.recon.algorithm/FBP.yaml b/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/FBP.yaml
similarity index 100%
rename from yaml_templates/httomolibgpu/2.0/httomolibgpu.recon.algorithm/FBP.yaml
rename to yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/FBP.yaml
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.recon.algorithm/SIRT.yaml b/yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/SIRT.yaml
similarity index 100%
rename from yaml_templates/httomolibgpu/2.0/httomolibgpu.recon.algorithm/SIRT.yaml
rename to yaml_templates/httomolibgpu/httomolibgpu.recon.algorithm/SIRT.yaml
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.recon.rotation/find_center_360.yaml b/yaml_templates/httomolibgpu/httomolibgpu.recon.rotation/find_center_360.yaml
similarity index 100%
rename from yaml_templates/httomolibgpu/2.0/httomolibgpu.recon.rotation/find_center_360.yaml
rename to yaml_templates/httomolibgpu/httomolibgpu.recon.rotation/find_center_360.yaml
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.recon.rotation/find_center_pc.yaml b/yaml_templates/httomolibgpu/httomolibgpu.recon.rotation/find_center_pc.yaml
similarity index 100%
rename from yaml_templates/httomolibgpu/2.0/httomolibgpu.recon.rotation/find_center_pc.yaml
rename to yaml_templates/httomolibgpu/httomolibgpu.recon.rotation/find_center_pc.yaml
diff --git a/yaml_templates/httomolibgpu/2.0/httomolibgpu.recon.rotation/find_center_vo.yaml b/yaml_templates/httomolibgpu/httomolibgpu.recon.rotation/find_center_vo.yaml
similarity index 100%
rename from yaml_templates/httomolibgpu/2.0/httomolibgpu.recon.rotation/find_center_vo.yaml
rename to yaml_templates/httomolibgpu/httomolibgpu.recon.rotation/find_center_vo.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.misc.corr/adjust_range.yaml b/yaml_templates/tomopy/tomopy.misc.corr/adjust_range.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.misc.corr/adjust_range.yaml
rename to yaml_templates/tomopy/tomopy.misc.corr/adjust_range.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.misc.corr/circ_mask.yaml b/yaml_templates/tomopy/tomopy.misc.corr/circ_mask.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.misc.corr/circ_mask.yaml
rename to yaml_templates/tomopy/tomopy.misc.corr/circ_mask.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.misc.corr/download_all.yaml b/yaml_templates/tomopy/tomopy.misc.corr/download_all.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.misc.corr/download_all.yaml
rename to yaml_templates/tomopy/tomopy.misc.corr/download_all.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.misc.corr/gaussian_filter.yaml b/yaml_templates/tomopy/tomopy.misc.corr/gaussian_filter.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.misc.corr/gaussian_filter.yaml
rename to yaml_templates/tomopy/tomopy.misc.corr/gaussian_filter.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.misc.corr/median_filter.yaml b/yaml_templates/tomopy/tomopy.misc.corr/median_filter.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.misc.corr/median_filter.yaml
rename to yaml_templates/tomopy/tomopy.misc.corr/median_filter.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.misc.corr/median_filter3d.yaml b/yaml_templates/tomopy/tomopy.misc.corr/median_filter3d.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.misc.corr/median_filter3d.yaml
rename to yaml_templates/tomopy/tomopy.misc.corr/median_filter3d.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.misc.corr/median_filter_nonfinite.yaml b/yaml_templates/tomopy/tomopy.misc.corr/median_filter_nonfinite.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.misc.corr/median_filter_nonfinite.yaml
rename to yaml_templates/tomopy/tomopy.misc.corr/median_filter_nonfinite.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.misc.corr/remove_nan.yaml b/yaml_templates/tomopy/tomopy.misc.corr/remove_nan.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.misc.corr/remove_nan.yaml
rename to yaml_templates/tomopy/tomopy.misc.corr/remove_nan.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.misc.corr/remove_neg.yaml b/yaml_templates/tomopy/tomopy.misc.corr/remove_neg.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.misc.corr/remove_neg.yaml
rename to yaml_templates/tomopy/tomopy.misc.corr/remove_neg.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.misc.corr/remove_outlier.yaml b/yaml_templates/tomopy/tomopy.misc.corr/remove_outlier.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.misc.corr/remove_outlier.yaml
rename to yaml_templates/tomopy/tomopy.misc.corr/remove_outlier.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.misc.corr/remove_outlier1d.yaml b/yaml_templates/tomopy/tomopy.misc.corr/remove_outlier1d.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.misc.corr/remove_outlier1d.yaml
rename to yaml_templates/tomopy/tomopy.misc.corr/remove_outlier1d.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.misc.corr/remove_outlier3d.yaml b/yaml_templates/tomopy/tomopy.misc.corr/remove_outlier3d.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.misc.corr/remove_outlier3d.yaml
rename to yaml_templates/tomopy/tomopy.misc.corr/remove_outlier3d.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.misc.corr/remove_ring.yaml b/yaml_templates/tomopy/tomopy.misc.corr/remove_ring.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.misc.corr/remove_ring.yaml
rename to yaml_templates/tomopy/tomopy.misc.corr/remove_ring.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.misc.corr/sobel_filter.yaml b/yaml_templates/tomopy/tomopy.misc.corr/sobel_filter.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.misc.corr/sobel_filter.yaml
rename to yaml_templates/tomopy/tomopy.misc.corr/sobel_filter.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.misc.morph/download_all.yaml b/yaml_templates/tomopy/tomopy.misc.morph/download_all.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.misc.morph/download_all.yaml
rename to yaml_templates/tomopy/tomopy.misc.morph/download_all.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.misc.morph/downsample.yaml b/yaml_templates/tomopy/tomopy.misc.morph/downsample.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.misc.morph/downsample.yaml
rename to yaml_templates/tomopy/tomopy.misc.morph/downsample.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.misc.morph/pad.yaml b/yaml_templates/tomopy/tomopy.misc.morph/pad.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.misc.morph/pad.yaml
rename to yaml_templates/tomopy/tomopy.misc.morph/pad.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.misc.morph/sino_360_to_180.yaml b/yaml_templates/tomopy/tomopy.misc.morph/sino_360_to_180.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.misc.morph/sino_360_to_180.yaml
rename to yaml_templates/tomopy/tomopy.misc.morph/sino_360_to_180.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.misc.morph/trim_sinogram.yaml b/yaml_templates/tomopy/tomopy.misc.morph/trim_sinogram.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.misc.morph/trim_sinogram.yaml
rename to yaml_templates/tomopy/tomopy.misc.morph/trim_sinogram.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.misc.morph/upsample.yaml b/yaml_templates/tomopy/tomopy.misc.morph/upsample.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.misc.morph/upsample.yaml
rename to yaml_templates/tomopy/tomopy.misc.morph/upsample.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.alignment/add_jitter.yaml b/yaml_templates/tomopy/tomopy.prep.alignment/add_jitter.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.alignment/add_jitter.yaml
rename to yaml_templates/tomopy/tomopy.prep.alignment/add_jitter.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.alignment/add_noise.yaml b/yaml_templates/tomopy/tomopy.prep.alignment/add_noise.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.alignment/add_noise.yaml
rename to yaml_templates/tomopy/tomopy.prep.alignment/add_noise.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.alignment/align_joint.yaml b/yaml_templates/tomopy/tomopy.prep.alignment/align_joint.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.alignment/align_joint.yaml
rename to yaml_templates/tomopy/tomopy.prep.alignment/align_joint.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.alignment/align_seq.yaml b/yaml_templates/tomopy/tomopy.prep.alignment/align_seq.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.alignment/align_seq.yaml
rename to yaml_templates/tomopy/tomopy.prep.alignment/align_seq.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.alignment/blur_edges.yaml b/yaml_templates/tomopy/tomopy.prep.alignment/blur_edges.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.alignment/blur_edges.yaml
rename to yaml_templates/tomopy/tomopy.prep.alignment/blur_edges.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.alignment/distortion_correction_proj.yaml b/yaml_templates/tomopy/tomopy.prep.alignment/distortion_correction_proj.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.alignment/distortion_correction_proj.yaml
rename to yaml_templates/tomopy/tomopy.prep.alignment/distortion_correction_proj.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.alignment/distortion_correction_sino.yaml b/yaml_templates/tomopy/tomopy.prep.alignment/distortion_correction_sino.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.alignment/distortion_correction_sino.yaml
rename to yaml_templates/tomopy/tomopy.prep.alignment/distortion_correction_sino.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.alignment/download_all.yaml b/yaml_templates/tomopy/tomopy.prep.alignment/download_all.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.alignment/download_all.yaml
rename to yaml_templates/tomopy/tomopy.prep.alignment/download_all.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.alignment/scale.yaml b/yaml_templates/tomopy/tomopy.prep.alignment/scale.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.alignment/scale.yaml
rename to yaml_templates/tomopy/tomopy.prep.alignment/scale.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.alignment/shift_images.yaml b/yaml_templates/tomopy/tomopy.prep.alignment/shift_images.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.alignment/shift_images.yaml
rename to yaml_templates/tomopy/tomopy.prep.alignment/shift_images.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.normalize/download_all.yaml b/yaml_templates/tomopy/tomopy.prep.normalize/download_all.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.normalize/download_all.yaml
rename to yaml_templates/tomopy/tomopy.prep.normalize/download_all.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.normalize/minus_log.yaml b/yaml_templates/tomopy/tomopy.prep.normalize/minus_log.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.normalize/minus_log.yaml
rename to yaml_templates/tomopy/tomopy.prep.normalize/minus_log.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.normalize/normalize.yaml b/yaml_templates/tomopy/tomopy.prep.normalize/normalize.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.normalize/normalize.yaml
rename to yaml_templates/tomopy/tomopy.prep.normalize/normalize.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.normalize/normalize_bg.yaml b/yaml_templates/tomopy/tomopy.prep.normalize/normalize_bg.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.normalize/normalize_bg.yaml
rename to yaml_templates/tomopy/tomopy.prep.normalize/normalize_bg.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.normalize/normalize_nf.yaml b/yaml_templates/tomopy/tomopy.prep.normalize/normalize_nf.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.normalize/normalize_nf.yaml
rename to yaml_templates/tomopy/tomopy.prep.normalize/normalize_nf.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.normalize/normalize_roi.yaml b/yaml_templates/tomopy/tomopy.prep.normalize/normalize_roi.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.normalize/normalize_roi.yaml
rename to yaml_templates/tomopy/tomopy.prep.normalize/normalize_roi.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.phase/retrieve_phase.yaml b/yaml_templates/tomopy/tomopy.prep.phase/retrieve_phase.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.phase/retrieve_phase.yaml
rename to yaml_templates/tomopy/tomopy.prep.phase/retrieve_phase.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.stripe/download_all.yaml b/yaml_templates/tomopy/tomopy.prep.stripe/download_all.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.stripe/download_all.yaml
rename to yaml_templates/tomopy/tomopy.prep.stripe/download_all.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.stripe/remove_all_stripe.yaml b/yaml_templates/tomopy/tomopy.prep.stripe/remove_all_stripe.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.stripe/remove_all_stripe.yaml
rename to yaml_templates/tomopy/tomopy.prep.stripe/remove_all_stripe.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.stripe/remove_dead_stripe.yaml b/yaml_templates/tomopy/tomopy.prep.stripe/remove_dead_stripe.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.stripe/remove_dead_stripe.yaml
rename to yaml_templates/tomopy/tomopy.prep.stripe/remove_dead_stripe.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.stripe/remove_large_stripe.yaml b/yaml_templates/tomopy/tomopy.prep.stripe/remove_large_stripe.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.stripe/remove_large_stripe.yaml
rename to yaml_templates/tomopy/tomopy.prep.stripe/remove_large_stripe.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.stripe/remove_stripe_based_filtering.yaml b/yaml_templates/tomopy/tomopy.prep.stripe/remove_stripe_based_filtering.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.stripe/remove_stripe_based_filtering.yaml
rename to yaml_templates/tomopy/tomopy.prep.stripe/remove_stripe_based_filtering.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.stripe/remove_stripe_based_fitting.yaml b/yaml_templates/tomopy/tomopy.prep.stripe/remove_stripe_based_fitting.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.stripe/remove_stripe_based_fitting.yaml
rename to yaml_templates/tomopy/tomopy.prep.stripe/remove_stripe_based_fitting.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.stripe/remove_stripe_based_interpolation.yaml b/yaml_templates/tomopy/tomopy.prep.stripe/remove_stripe_based_interpolation.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.stripe/remove_stripe_based_interpolation.yaml
rename to yaml_templates/tomopy/tomopy.prep.stripe/remove_stripe_based_interpolation.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.stripe/remove_stripe_based_sorting.yaml b/yaml_templates/tomopy/tomopy.prep.stripe/remove_stripe_based_sorting.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.stripe/remove_stripe_based_sorting.yaml
rename to yaml_templates/tomopy/tomopy.prep.stripe/remove_stripe_based_sorting.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.stripe/remove_stripe_fw.yaml b/yaml_templates/tomopy/tomopy.prep.stripe/remove_stripe_fw.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.stripe/remove_stripe_fw.yaml
rename to yaml_templates/tomopy/tomopy.prep.stripe/remove_stripe_fw.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.stripe/remove_stripe_sf.yaml b/yaml_templates/tomopy/tomopy.prep.stripe/remove_stripe_sf.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.stripe/remove_stripe_sf.yaml
rename to yaml_templates/tomopy/tomopy.prep.stripe/remove_stripe_sf.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.stripe/remove_stripe_ti.yaml b/yaml_templates/tomopy/tomopy.prep.stripe/remove_stripe_ti.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.stripe/remove_stripe_ti.yaml
rename to yaml_templates/tomopy/tomopy.prep.stripe/remove_stripe_ti.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.stripe/stripes_detect3d.yaml b/yaml_templates/tomopy/tomopy.prep.stripe/stripes_detect3d.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.stripe/stripes_detect3d.yaml
rename to yaml_templates/tomopy/tomopy.prep.stripe/stripes_detect3d.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.prep.stripe/stripes_mask3d.yaml b/yaml_templates/tomopy/tomopy.prep.stripe/stripes_mask3d.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.prep.stripe/stripes_mask3d.yaml
rename to yaml_templates/tomopy/tomopy.prep.stripe/stripes_mask3d.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.recon.algorithm/recon.yaml b/yaml_templates/tomopy/tomopy.recon.algorithm/recon.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.recon.algorithm/recon.yaml
rename to yaml_templates/tomopy/tomopy.recon.algorithm/recon.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.recon.rotation/download_all.yaml b/yaml_templates/tomopy/tomopy.recon.rotation/download_all.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.recon.rotation/download_all.yaml
rename to yaml_templates/tomopy/tomopy.recon.rotation/download_all.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.recon.rotation/find_center.yaml b/yaml_templates/tomopy/tomopy.recon.rotation/find_center.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.recon.rotation/find_center.yaml
rename to yaml_templates/tomopy/tomopy.recon.rotation/find_center.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.recon.rotation/find_center_pc.yaml b/yaml_templates/tomopy/tomopy.recon.rotation/find_center_pc.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.recon.rotation/find_center_pc.yaml
rename to yaml_templates/tomopy/tomopy.recon.rotation/find_center_pc.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.recon.rotation/find_center_vo.yaml b/yaml_templates/tomopy/tomopy.recon.rotation/find_center_vo.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.recon.rotation/find_center_vo.yaml
rename to yaml_templates/tomopy/tomopy.recon.rotation/find_center_vo.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.recon.rotation/write_center.yaml b/yaml_templates/tomopy/tomopy.recon.rotation/write_center.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.recon.rotation/write_center.yaml
rename to yaml_templates/tomopy/tomopy.recon.rotation/write_center.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.sim.project/add_drift.yaml b/yaml_templates/tomopy/tomopy.sim.project/add_drift.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.sim.project/add_drift.yaml
rename to yaml_templates/tomopy/tomopy.sim.project/add_drift.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.sim.project/add_focal_spot_blur.yaml b/yaml_templates/tomopy/tomopy.sim.project/add_focal_spot_blur.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.sim.project/add_focal_spot_blur.yaml
rename to yaml_templates/tomopy/tomopy.sim.project/add_focal_spot_blur.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.sim.project/add_gaussian.yaml b/yaml_templates/tomopy/tomopy.sim.project/add_gaussian.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.sim.project/add_gaussian.yaml
rename to yaml_templates/tomopy/tomopy.sim.project/add_gaussian.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.sim.project/add_poisson.yaml b/yaml_templates/tomopy/tomopy.sim.project/add_poisson.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.sim.project/add_poisson.yaml
rename to yaml_templates/tomopy/tomopy.sim.project/add_poisson.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.sim.project/add_rings.yaml b/yaml_templates/tomopy/tomopy.sim.project/add_rings.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.sim.project/add_rings.yaml
rename to yaml_templates/tomopy/tomopy.sim.project/add_rings.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.sim.project/add_salt_pepper.yaml b/yaml_templates/tomopy/tomopy.sim.project/add_salt_pepper.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.sim.project/add_salt_pepper.yaml
rename to yaml_templates/tomopy/tomopy.sim.project/add_salt_pepper.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.sim.project/add_zingers.yaml b/yaml_templates/tomopy/tomopy.sim.project/add_zingers.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.sim.project/add_zingers.yaml
rename to yaml_templates/tomopy/tomopy.sim.project/add_zingers.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.sim.project/download_all.yaml b/yaml_templates/tomopy/tomopy.sim.project/download_all.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.sim.project/download_all.yaml
rename to yaml_templates/tomopy/tomopy.sim.project/download_all.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.sim.project/project.yaml b/yaml_templates/tomopy/tomopy.sim.project/project.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.sim.project/project.yaml
rename to yaml_templates/tomopy/tomopy.sim.project/project.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.sim.project/project2.yaml b/yaml_templates/tomopy/tomopy.sim.project/project2.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.sim.project/project2.yaml
rename to yaml_templates/tomopy/tomopy.sim.project/project2.yaml
diff --git a/yaml_templates/tomopy/1.15/tomopy.sim.project/project3.yaml b/yaml_templates/tomopy/tomopy.sim.project/project3.yaml
similarity index 100%
rename from yaml_templates/tomopy/1.15/tomopy.sim.project/project3.yaml
rename to yaml_templates/tomopy/tomopy.sim.project/project3.yaml


Test patch:
diff --git a/tests/samples/pipeline_template_examples/testing/example.yaml b/tests/samples/pipeline_template_examples/testing/example.yaml
new file mode 100644
index 000000000..703917056
--- /dev/null
+++ b/tests/samples/pipeline_template_examples/testing/example.yaml
@@ -0,0 +1,26 @@
+- method: standard_tomo
+  module_path: httomo.data.hdf.loaders
+  parameters:
+   name: tomo
+   data_path: entry1/tomo_entry/data/data
+   image_key_path: entry1/tomo_entry/instrument/detector/image_key
+   rotation_angles:
+     data_path: /entry1/tomo_entry/data/rotation_angle
+- method: normalize
+  module_path: tomopy.prep.normalize
+  parameters:
+    cutoff: null
+    averaging: mean
+- method: minus_log
+  module_path: tomopy.prep.normalize
+  parameters: {}
+- method: save_to_images
+  module_path: httomolib.misc.images
+  parameters:
+    subfolder_name: images
+    axis: auto
+    file_format: tif
+    bits: 8
+    perc_range_min: 0.0
+    perc_range_max: 100.0
+    jpeg_quality: 95
diff --git a/tests/samples/pipeline_template_examples/testing/incorrect_path.yaml b/tests/samples/pipeline_template_examples/testing/incorrect_path.yaml
index 562b2e17f..35a2c2696 100644
--- a/tests/samples/pipeline_template_examples/testing/incorrect_path.yaml
+++ b/tests/samples/pipeline_template_examples/testing/incorrect_path.yaml
@@ -8,15 +8,4 @@
       data_path: /entry1/tomo_entry/data/rotation_angle
     dimension: 1
     preview: [None, None, None]
-    pad: 0
-- method: minus_log
-  module_path: tomopy.prep.normalize
-  parameters: {}
-- method: remove_stripe_fw
-  module_path: tomopy.prep.stripe
-  parameters:
-    level: null
-    wname: db5
-    sigma: 2
-    pad: true
-
+    pad: 0
\ No newline at end of file
diff --git a/tests/samples/pipeline_template_examples/testing/wrong_indentation_pipeline.yaml b/tests/samples/pipeline_template_examples/testing/wrong_indentation_pipeline.yaml
index cd9b62c38..8d0aee8ba 100644
--- a/tests/samples/pipeline_template_examples/testing/wrong_indentation_pipeline.yaml
+++ b/tests/samples/pipeline_template_examples/testing/wrong_indentation_pipeline.yaml
@@ -1,12 +1,11 @@
 - method: standard_tomo
   module_path: httomo.data.hdf.loaders
   parameters:
-    name: tomo
-      in_file: tests/test_data/tomo_standard.nxs
-      data_path: /entry1/tomo_entry/data/data
-      image_key_path: /entry1/tomo_entry/instrument/detector/image_key
-      rotation_angles:
-        data_path: /entry1/tomo_entry/data/rotation_angle
-      dimension: 1
-      preview: [None, None, None]
-      pad: 0
+      name: tomo
+    data_path: /entry1/tomo_entry/data/data
+    image_key_path: /entry1/tomo_entry/instrument/detector/image_key
+    rotation_angles:
+      data_path: /entry1/tomo_entry/data/rotation_angle
+    dimension: 1
+    preview: [None, None, None]
+    pad: 0