diff --git a/CMake/version.h.in b/CMake/version.h.in
new file mode 100644
index 0000000000000000000000000000000000000000..5357c8ffb5f576e54caee66c1f42d0ea433165ee
--- /dev/null
+++ b/CMake/version.h.in
@@ -0,0 +1,9 @@
+#ifndef EVERYBEAM_VERSION_H_
+#define EVERYBEAM_VERSION_H_
+
+#define EVERYBEAM_VERSION "@EVERYBEAM_VERSION@"
+#define EVERYBEAM_VERSION_MAJOR @EVERYBEAM_VERSION_MAJOR@
+#define EVERYBEAM_VERSION_MINOR @EVERYBEAM_VERSION_MINOR@
+#define EVERYBEAM_VERSION_PATCH @EVERYBEAM_VERSION_PATCH@
+
+#endif
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 58982b145a9f349feb07ad7792162a95e8ac75bc..c7aa1e0ee5192a938dbd39ee19afe995f3803c0f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,8 +3,18 @@
 cmake_minimum_required(VERSION 3.0.0)
 
 #------------------------------------------------------------------------------
-# Set project name and version number
-project(EveryBeam VERSION 5.0.0)
+# Set version name and project number
+set(EVERYBEAM_VERSION 0.1.0)
+if(EVERYBEAM_VERSION MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)")
+  set(EVERYBEAM_VERSION_MAJOR "${CMAKE_MATCH_1}")
+  set(EVERYBEAM_VERSION_MINOR "${CMAKE_MATCH_2}")
+  set(EVERYBEAM_VERSION_PATCH "${CMAKE_MATCH_3}")
+  message(${EVERYBEAM_VERSION_PATCH})
+else()
+  message(FATAL_ERROR "Failed to parse EVERYBEAM_VERSION='${EVERYBEAM_VERSION}'")
+endif()
+
+project(EveryBeam VERSION ${EVERYBEAM_VERSION})
 
 option (BUILD_WITH_PYTHON "Build python bindings" OFF)
 
@@ -126,8 +136,15 @@ if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME AND BUILD_TESTING)
 endif()
 
 #------------------------------------------------------------------------------
-# Generate config.h file
+# Generate config.h and version.h headers
 configure_file(${CMAKE_SOURCE_DIR}/CMake/config.h.in ${CMAKE_BINARY_DIR}/config.h)
+configure_file(${CMAKE_SOURCE_DIR}/CMake/version.h.in ${CMAKE_BINARY_DIR}/version.h)
+
+install(FILES
+  ${CMAKE_BINARY_DIR}/config.h  
+  ${CMAKE_BINARY_DIR}/version.h
+  DESTINATION "include/${CMAKE_PROJECT_NAME}"
+  )
 
 #------------------------------------------------------------------------------
 if(BUILD_WITH_PYTHON)
diff --git a/README.md b/README.md
index 97b0741504df64987c293b1bc0c2aa21f9a4eba9..345b096522747ac0fb95f06e059d194b632c78dc 100644
--- a/README.md
+++ b/README.md
@@ -1,33 +1,56 @@
 # EveryBeam library
 
-Stand alone version of the LOFAR station response library (LOFARBeam).
+This package can be used to compute the beam response for a variety of
+radio telescopes, i.e.:
 
-This package provides an abstract interface to a selection of beam responses, and beamformed versions thereof. Currently implemented are:
+* LOFAR
+* OSKAR
+* MWA
+* VLA
+* ATCA
+
+This package also provides an abstract interface to a selection of beam responses for apperture arrays (LOFAR/OSKAR), and beamformed versions thereof. Currently implemented are:
 
  * Hamaker
- * OSKAR-dipole
- * LOBES (work in progress)
  * OSKAR spherical wave model
+ * OSKAR-dipole: work in progress
+ * LOBES: work in progress. A coefficient file is currently only available for LOFAR station CS302LBA. Selecting the LOBES model defaults back to Hamaker, except for the aforementioned station.
+
+EveryBeam aims to gradually replace the stand alone version of the LOFAR station response library (LOFARBeam).
 
+EveryBeam is licensed under the terms of the [GNU GPL3 license](LICENSE). 
+ 
 ## Installation
 
-On a clean ubuntu 18.04 computer, the following packages are required:
+On a clean ubuntu 18.04 computer, the following packages are required, see also the [docker file](docker/Dockerfile-base):
+
+General packages
+
+    apt-get -y install wget git make cmake g++ doxygen \
+    libboost-all-dev libhdf5-dev libfftw3-dev \
+    libblas-dev liblapack-dev libgsl-dev libxml2-dev \
+    libgtkmm-3.0-dev libpython3-dev python3-distutils
 
-    apt install build-essential casacore-dev cmake python3-distutils libblas-dev liblapack-dev libhdf5-dev
+Astronomy packages:
+
+    apt-get -y install casacore-dev libcfitsio-dev wcslib-dev
 
 Installation is then typically done as:
 
     mkdir build
     cd build
-    cmake ..
+    cmake -DBUILD_WITH_PYTHON=On/Off ..
     make
     make install
 
-A `Dockerfile` to compile a working version of DPPP and EveryBeam is included in the `test` directory.
+The `BUILD_WITH_PYTHON` option indicates whether the python bindings for EveryBeam should be generated. If switched `On` (non-default), a shared `everybeam.cpython` should appear in the `[INSTALL_DIR]/lib/python[MAJOR].[MINOR]/site-packages` directory. 
+
+A [`Dockerfile`](docker/Dockerfile-everybeam) to compile a working version of DPPP and EveryBeam is included in the `test` directory.
 
 ## Usage with DPPP
 
-To use with DPPP, the streaming visibility framework used for LOFAR, currently the branch `oskar` from that repository is required.
+To use with DPPP, the streaming visibility framework used for LOFAR, currently the `development` branch from that repository is required, 
+see https://git.astron.nl/RD/DP3/.
 
 A test measurementset is included in DPPP (`tNDPPP-generic.in_MS.tgz`).
 
@@ -40,6 +63,10 @@ To simulate visibilities with a certain element model, use `DPPP DPPP.parset` wh
     predict.elementmodel=oskardipole
     predict.sourcedb=tNDPPP-generic.MS/sky  # sourcedb file
 
+## Usage with WSClean
+
+To use EveryBeam with WSClean (for A-term or primary beam corrections), WSClean needs to be compiled against EveryBeam. In order to do so, make sure WSClean can find EveryBeam by adding the EveryBeam install dir to the `CMAKE_PREFIX_PATH`.
+
 ## Design
 
 See [docs/design.md](@ref designpage) for design considerations.
diff --git a/demo/comparison-oskar/README.md b/demo/comparison-oskar/readme.md
similarity index 73%
rename from demo/comparison-oskar/README.md
rename to demo/comparison-oskar/readme.md
index 4efbb8ff49ef2111a33b632d5a9c008daf96875a..44c64404c12e06d59e83da2003c4511e58e7274c 100644
--- a/demo/comparison-oskar/README.md
+++ b/demo/comparison-oskar/readme.md
@@ -1,43 +1,46 @@
+OSKAR-demo
+===================
+
 # Introduction
 
 The scripts in this directory compare the implementations of the spherical wave model for the element response in OSKAR and EveryBeam. The comparison is made per basefunction. One basefunction has two complex components.
 
 # Usage
 Comparison plots can be generated by giving the following command in the build directory
-```
-make comparison
-```
+
+    make comparison
+
 This will generate a series of image files named basefunction*.png in the \<builddir\>/demo/comparison-oskar directory. The number of basefunctions depends on $L$, the maximum order, and is given by  $N = 2(L+1)^2-2$.
 
 The maximum order can be set by the environment variable MAX_ORDER, for example
-```
-MAX_ORDER=3 make comparison-oskar
-```
+
+    MAX_ORDER=3 make comparison-oskar
+
 computes the basefunctions up to order 3, generating 30 image files.
 
 The application of the 'transpose' can be activated by the APPLY_TRANSPOSE environment variable, for example
-```
-APPLY_TRANSPOSE=ON MAX_ORDER=3 make comparison-oskar
-```
+
+    APPLY_TRANSPOSE=ON MAX_ORDER=3 make comparison-oskar
+
 This option was needed to make the results of OSKAR and EveryBeam the same.
 With the fix of the 'transpose' issue the default value was changed from 'ON' to 'OFF.
 
 The environment variable TOLERANCE makes the demo a test that fails if the difference between OSKAR and EveryBeam results is larger its value. For example
-```
-TOLERANCE=1e-16 make comparison-oskar
-```
+
+    TOLERANCE=1e-16 make comparison-oskar
+
 fails, while
-```
-TOLERANCE=1e-12 make comparison-oskar
-```
+
+    TOLERANCE=1e-12 make comparison-oskar
+
 succeeds.
 
 This test is part of the 'integration' configuration of CTests. It will be run when the integration configuration is run with
-```
-ctest -C integration
-```
+
+    ctest -C integration
+
 
 
 # Notes
-The read_oskar_beam.py script tranforms the polarization vector from a X,Y coordinate system to a theta,phi coordinate system. It still needs to be verified that this transformation is the same as in OSKAR.
+The `read_oskar_beam.py` script tranforms the polarization vector from a X,Y coordinate system to a theta,phi coordinate system. It still needs to be verified that this transformation is the same as in OSKAR.
 
diff --git a/docs/design.md b/docs/design.md
index 5c2f5ac9008d3771b5c817b7336fdaf584d2960b..6314d987b10734b988c7914b3114bd2a5586c528 100644
--- a/docs/design.md
+++ b/docs/design.md
@@ -20,7 +20,7 @@ Design {#designpage}
 
 LOFAR specific is [lofarreadutils](@ref lofarreadutils.h) which reads
 metadata from a LOFAR MeasurementSet. Based on that data it composes Station
-consisting of BeamFormers and Elements.
+consisting of BeamFormers and Elements. OSKAR specific is [msv3readutils](@ref msv3readutils.h) for reading OSKAR simulated measurement sets.
 
 The inputs of a BeamFormer are elements at a given positions.
 A BeamFormer is also an Element. This allows composition of multilevel
@@ -33,6 +33,10 @@ HBA1 as inputs.
 
 <img src="https://git.astron.nl/RD/EveryBeam/-/raw/6f8f7c3e9c2e50ad14e3b1afe538b2602460f97a/docs/everybeam_uml.png" alt="everybeam_uml" width="1200"/>
 
+In addition, EveryBeam offers a suite of aterm calculation methods in the `aterms` namespace. This namespace rougly has the following layout:
+
+<img src="https://git.astron.nl/RD/EveryBeam/-/raw/92f9aa123560fa2841468b2201d259b2c4b1ddd7/docs/everybeam_aterms.png" alt="everybeam_aterms" width="1200"/>
+
 ## Classes:
 
 * [Station](@ref everybeam::Station) is a thin (but central!) wrapper around an
@@ -42,8 +46,8 @@ HBA1 as inputs.
     - `position`: position of station
     - `model`: antenna model/element response model (Hamaker/OSKARDipole/OSKARSphericalWave/LOBES) 
   
-  The all important attribute is the `itsAntenna`, which (somewhat confusingly) can denote either an `Element` or a `BeamFormer` pointer.
-  `Station` class contains a couple of convenience specialisations for the `response` and `arrayFactor` methods to facilitate implementation in dependencies such as `DP3` and `WSClean`.
+  The all important attribute is the `antenna_`, which (somewhat confusingly) can denote either an `Element` or a `BeamFormer` pointer.
+  `Station` class contains a couple of convenience specialisations for the `response` and `ArrayFactor` methods to facilitate implementation in dependencies such as `DP3` and `WSClean`.
 * [Element](@ref everybeam::Element) - something for which a
   response can be computed, can be a single element (antenna) or a beamformer.
   Constructor consumes:
@@ -62,39 +66,6 @@ HBA1 as inputs.
 Constructor (optionally) consumes:
     - `CoordinateSystem`
     - `phase_reference_position`
+* [AtermConfig](@ref everybeam::aterms::ATermConfig) - Class to configure the aterms calculation. This class is typically interfaced from DP3 and WSClean in order to request aterm calculations from EveryBeam
 
 
-## Questions/Remarks in view of development:
-
-* [Station](@ref everybeam::Station):
-    - **Question**:  header file `Stations.h` contains different       specializations of `response` method. Are they all needed? 
-    - **Question**: re-use `Station::rotation` (and maybe place `rotation` in a utilities / common directory) ?
-    - **Question**: `Station` is said to be a thin wrapper around 
-    `Element`, can't we make it "header-only"?
-    - **Remark**: `Station` is probably the central class which needs to be interfaced by `DP3` and `WSClean`. So when designing the new API, it requires due attention how the methods for this class should look like.
-* [Element](@ref everybeam::Element) 
-* [ElementResponse](@ref everybeam::ElementResponse)
-    - **Question**: Can be made a `struct`, since only `public` components anyway?
-* [BeamFormer](@ref everybeam::BeamFormer):
-    - **Question**: seems that `#include "Element.h"` is unused?
-* [Antenna](@ref everybeam::ElementResponse):
-    - **Question**: can't we make `Antenna` header-only? Only requires migration of `transform_to_local_direction` to header file.
-  
-
-<!--Markdown | Less | Pretty
---- | --- | ---
-*Still* | `renders` | **nicely**
-1 | 2 | 3
--->
-
-
-
-
-
-
-
-<!--```python
-s = "Python syntax highlighting"
-print s
-```-->
-
diff --git a/docs/everybeam_aterms.png b/docs/everybeam_aterms.png
new file mode 100644
index 0000000000000000000000000000000000000000..4c22e7822f871cf5eb01af18193d1cc1bc1e0c5c
Binary files /dev/null and b/docs/everybeam_aterms.png differ
diff --git a/python/placeholder.md b/python/placeholder.md
deleted file mode 100644
index ed8b205f65a2e02efb8996039f1338e45d51b7dc..0000000000000000000000000000000000000000
--- a/python/placeholder.md
+++ /dev/null
@@ -1 +0,0 @@
-# Python bindings go here
\ No newline at end of file
diff --git a/python/readme.md b/python/readme.md
new file mode 100644
index 0000000000000000000000000000000000000000..8ad94ecfb9dbf305838ae9977e5fa94e39806c2f
--- /dev/null
+++ b/python/readme.md
@@ -0,0 +1,12 @@
+Python wrappers
+===============
+
+This directory contains the python bindings for everybeam, along with a couple of utility functions for the LOBES model response. In order to compile the python bindings make sure that
+
+    -DBUILD_WITH_PYTHON=On
+
+Once installed, make sure that the installed `everybeam.cpython` shared object is on you `PYTHONPATH`. Check if everything works by running 
+
+    python3 -c "import everybeam"
+
+from the commandline.
\ No newline at end of file