diff --git a/.coveragerc b/.coveragerc
index 17e00a286b2e5096868d6ef26800f435eaaff337..f8c4d0a69bf92ed34dff62c340a1006677e6a72f 100644
--- a/.coveragerc
+++ b/.coveragerc
@@ -2,7 +2,13 @@
 [run]
 branch = True
 source = nqontrol
-omit = run.py
+omit =
+    *run.py
+    *nqontrolUI.py
+    *controller.py
+    *mockAdwin.py
+    *errors.py
+    *settings_local.py
 
 [paths]
 source =
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 548087d800b8bd9212d47ac5f842467fb4a2057a..da004b13c77d986fd3717d409d317923dc305663 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,6 +1,7 @@
 stages:
-  - build
   - test
+  - build
+  - build-test
   - deploy
   - deploy-test
 
@@ -51,10 +52,12 @@ pages:
     expire_in: 30 days
   only:
     - develop
+    - master
+    - tags
 
 test wheel installation:
   image: lasnq/nqontrol:lib
-  stage: test
+  stage: build-test
   before_script:
     - echo 'DEVICES_LIST = [0]' > src/nqontrol/settings_local.py
   script:
@@ -76,7 +79,8 @@ deploy staging:
     - sh bin/enable_ssh
   script:
     - scp $SCP_PARAMS dist/*.whl $SSH_SERVER:$SERVER_ROOT/software-builds/nqontrol-staging
-  when: manual
+  only:
+    - develop
 
 deploy production:
   image: lasnq/nqontrol
diff --git a/README.md b/README.md
index 6ded3cc2a3f4354606e53c1928a7fd72161a10f2..f0543fe3ea51b89ffb9078630e7e66c43bab7664 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,20 @@
 # ReadMe
 
-[![pipeline status](https://gitlab.aei.uni-hannover.de/las-nq/adwin-control/badges/develop/pipeline.svg)](https://gitlab.aei.uni-hannover.de/las-nq/adwin-control/commits/develop)
-[![coverage report](https://gitlab.aei.uni-hannover.de/las-nq/adwin-control/badges/develop/coverage.svg)](https://gitlab.aei.uni-hannover.de/las-nq/adwin-control/commits/develop)
+[![pipeline status](https://gitlab.aei.uni-hannover.de/las-nq/adwin-control/badges/master/pipeline.svg)](https://gitlab.aei.uni-hannover.de/las-nq/adwin-control/commits/master)
+[![coverage report](https://gitlab.aei.uni-hannover.de/las-nq/adwin-control/badges/master/coverage.svg)](https://gitlab.aei.uni-hannover.de/las-nq/adwin-control/commits/master)
+
+`NQontrol` is a python project aiming the replacement of analog PID controllers in the lab.
+    
+The project is a solution based on the ADwin real-time platform that is able to deliver in excess of 8 simultaneous locking loops running with 200 kHz sampling frequency, and offers five second-order filtering sections per channel for optimal control performance. 
+This Python package, together with a web-based GUI, makes the system easy to use and adapt for a wide range of control tasks in quantum-optical experiments.
 
 ## Documentation
 
+For more information please read the online documentation:
+
 * Current documentation of the [latest release](https://las-nq-serv.physnet.uni-hamburg.de/python/nqontrol)
 * Current documentation of the [latest development version](https://las-nq-serv.physnet.uni-hamburg.de/python/nqontrol-stage)
 
-TODO  
-
 ## NQontrol Installation
+
 For installation please refer to the [documentation page](https://las-nq-serv.physnet.uni-hamburg.de/python/nqontrol/install.html)
diff --git a/doc/index.rst b/doc/index.rst
index f89d83cb5474c625faacb0a882ca2536856c71eb..f4e364e4bf74bcf492b48740e8524294539142c4 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -2,8 +2,8 @@
 nqontrol
 ========
 
-This is the documentation of **nqontrol**.
-nqontrol is a python project aiming the replacement of analog PID controllers in the lab.
+This is the documentation of **NQontrol**.
+NQontrol is a Python project aiming the replacement of analog PID controllers in the lab.
 
 Read the :doc:`Introduction <intro>` for more information on the system.
 
@@ -11,18 +11,28 @@ Contents
 ========
 
 .. toctree::
-   :maxdepth: 2
-
-   Introduction <intro>
-   Installation <install>
-   Basic Usage <usage>
-   Graphical User Interface <gui>
-   Configuration <configuration>
-   System Performance and Measurements <performance>
-   Api Documentation <apidoc>
-   Development Documentation <documentation>
-   Concept for realtime plotting <plotting_concept>
-   Authors <authors>
+  :maxdepth: 2
+  :caption: Usage
+
+  Introduction <intro>
+  Installation <install>
+  Basic Usage <usage>
+  Graphical User Interface <gui>
+  Configuration <configuration>
+
+.. toctree::
+  :maxdepth: 2
+  :caption: Development
+
+  Api Documentation <apidoc>
+  Development Documentation <documentation>
+
+.. toctree::
+  :maxdepth: 2
+  :caption: System and more
+
+  System Performance and Measurements <performance>
+  Authors <authors>
 
 
 Indices and tables
diff --git a/doc/intro.md b/doc/intro.md
index 0935a8543656770af8919b1a02e3705352e65ddb..aeef9fff81b773536e0a8f4dd8a96b7ffb1384cc 100644
--- a/doc/intro.md
+++ b/doc/intro.md
@@ -1,6 +1,6 @@
 # Introduction
 
-`nqontrol` is a python project aiming the replacement of analog PID controllers in the lab.
+`NQontrol` is a python project aiming the replacement of analog PID controllers in the lab.
 
 
 ## System Description
diff --git a/doc/plotting_concept.md b/doc/plotting_concept.md
deleted file mode 100644
index 8880152150c340efda18b0d0d07a36894361c7b7..0000000000000000000000000000000000000000
--- a/doc/plotting_concept.md
+++ /dev/null
@@ -1,59 +0,0 @@
-# Concept for Realtime Plotting of a Servo
-This concept was to develop a structured plotting scheme and was not updated after implementing it.
-So it might be useful to understand the implementation, but it isn't completely correct.
-
-## User Story
-
-### Terminal
-
-#### Ramp
-* Start a ramp with some parameters.
-  * The parameters will be saved in the object.
-  * Possible to reenable the same ramp.
-* Extra parameter to start saving data to fifo.
-
-#### Continuous Data
-* Enable the fifo data and define the interval.
-* Start the plotting (maybe only one command?)
-
-#### Realtime Plotting
-* Enable plotting with the defined interval.
-* _Optional: Ability to change parameters while plotting._
-
-### Dash
-TODO
-
-## Implementation
-
-### Take Data
-* Take number of requested entries for all 3 channels, max the size of the current adwin buffer.
-* Return as a `DataContainer`.
-
-### Prepare continuous Data
-* Take number of entries of the fifo buffer.
-* Delete oldest entries to stay at `maxlen`.
-
-### Prepare ramp Data
-* Take data.
-* Find the first entry in `output` that contains the minimum value.
-* Save the data from that index on and fill up with new taken data.
-  * Wait a time that it should be filled.
-  * Request number of data to fill.
-  * Local value of `maxlen` should not be larger than the fifo buffer size of adwin to avoid the need of looping.
-
-### Update the Graph
-* Take periodically the data and update the graph.
-* Period is automatically calculated: 
-  * Sleep a time to fill half of the fifo buffer.  
-    `TODO` How much can we increase it? 
-  * Maximal resulting framerate should be about 30 Hz.
-
-### Triggering the Ramp
-The output of the ramp on ADwin is based on a digital calculation.
-Therefore it is absolutely reproducible without any variances.
-
-#### Find the precice Value of the Minimum
-Take data of at least a whole ramp and find the minimum.
-
-* Need a saving frequency that matches to the current ramp.
-* Check that the precice value of the minimum is nearly the negative ramp amplitude.