diff --git a/Core/Beam/Beam.h b/Core/Beam/Beam.h
index 612b302664e0a14361abcb2bc71179c36ce9ea96..03a05517b0e7f51a2b0597f6860ecf9abfeb692f 100644
--- a/Core/Beam/Beam.h
+++ b/Core/Beam/Beam.h
@@ -22,7 +22,7 @@
 class IFootprintFactor;
 
 //! Beam defined by wavelength, direction and intensity.
-//! @ingroup simulation
+//! @ingroup beam
 
 class BA_CORE_API_ Beam : public INode
 {
diff --git a/Core/Beam/FootprintFactorGaussian.h b/Core/Beam/FootprintFactorGaussian.h
index 2807cd1f8debdc0062638e679d39b268f262160c..1fbd898468144b191bbaf248d4169be152c12ea5 100644
--- a/Core/Beam/FootprintFactorGaussian.h
+++ b/Core/Beam/FootprintFactorGaussian.h
@@ -20,7 +20,7 @@
 //! Calculates footprint coefficient for a gaussian beam
 //! Beam width is interpreted as the full width on the level
 //! of \f[ \exp{-1/2} \f] from the peak intensity.
-//! @ingroup simulation
+//! @ingroup beam
 
 class BA_CORE_API_ FootprintFactorGaussian : public IFootprintFactor
 {
diff --git a/Core/Beam/FootprintFactorSquare.h b/Core/Beam/FootprintFactorSquare.h
index ef3f7d85ee9c06de7dd0076c389a05ade9d644c6..e65caa7ef3477a402c6b74d8e622f2a7dbd68af0 100644
--- a/Core/Beam/FootprintFactorSquare.h
+++ b/Core/Beam/FootprintFactorSquare.h
@@ -18,7 +18,7 @@
 #include "IFootprintFactor.h"
 
 //! Calculates footprint coefficient for a square beam
-//! @ingroup simulation
+//! @ingroup beam
 
 class BA_CORE_API_ FootprintFactorSquare : public IFootprintFactor
 {
diff --git a/Core/Beam/IFootprintFactor.h b/Core/Beam/IFootprintFactor.h
index e41388350e50b0894bfaf0aac4f804885edc746e..62d59a94069fa9306d1b8ca8f2d326ef848778c1 100644
--- a/Core/Beam/IFootprintFactor.h
+++ b/Core/Beam/IFootprintFactor.h
@@ -22,7 +22,7 @@ class MultiLayer;
 class Beam;
 
 //! Abstract base for classes that calculate the beam footprint factor
-//! @ingroup simulation
+//! @ingroup beam
 
 class BA_CORE_API_ IFootprintFactor : public ICloneable, public INode
 {
diff --git a/Core/Binning/IPixel.h b/Core/Binning/IPixel.h
index f8ac970ff52823b6e7ce687d28685717b17072f4..f77ab86c401233b4176323af18db42a78f994964 100644
--- a/Core/Binning/IPixel.h
+++ b/Core/Binning/IPixel.h
@@ -19,7 +19,7 @@
 #include "WinDllMacros.h"
 
 //! Interface for a function that maps [0,1]x[0,1] to the kvectors in a pixel.
-//! @ingroup simulation
+//! @ingroup detector
 
 class BA_CORE_API_ IPixel
 {
diff --git a/Core/Instrument/AxisNames.h b/Core/Instrument/AxisNames.h
index 119f67f43c97c0e162d0492f2d67d3dc95579c7d..c267681174b128d1f8a75478fc87d63bc5824ac4 100644
--- a/Core/Instrument/AxisNames.h
+++ b/Core/Instrument/AxisNames.h
@@ -20,7 +20,7 @@
 
 //! Contains functions to create maps that give the right axis names for different
 //! detector types and units
-//! @ingroup simulation
+//! @ingroup detector
 
 namespace AxisNames
 {
diff --git a/Core/Instrument/ConvolutionDetectorResolution.h b/Core/Instrument/ConvolutionDetectorResolution.h
index d307ffa476549b70957c18ce0e25624213e538ee..1f2a0f4b35610e649743f40b1dd6eba5428d59d6 100644
--- a/Core/Instrument/ConvolutionDetectorResolution.h
+++ b/Core/Instrument/ConvolutionDetectorResolution.h
@@ -19,7 +19,7 @@
 #include "IResolutionFunction2D.h"
 
 //! Convolutes the intensity in 1 or 2 dimensions with a resolution function.
-//! @ingroup simulation
+//! @ingroup detector
 
 //! Limitation: this class assumes that the data points are evenly distributed on each axis
 
diff --git a/Core/Instrument/DetectionProperties.h b/Core/Instrument/DetectionProperties.h
index 48639925caa19cc29f62a2a315a079bd1690930d..6c1924b1dadf07929572d81540954f58047b13d1 100644
--- a/Core/Instrument/DetectionProperties.h
+++ b/Core/Instrument/DetectionProperties.h
@@ -21,7 +21,7 @@
 #include "WinDllMacros.h"
 
 //! Detector properties (efficiency, transmission).
-//! @ingroup simulation
+//! @ingroup detector
 
 class BA_CORE_API_ DetectionProperties : public INode
 {
diff --git a/Core/Instrument/DetectorContext.h b/Core/Instrument/DetectorContext.h
index bd68c8943c7ad7d89f1eb583bc96e3a8e026ee82..eb1b6763007c76eb97e40ead0286ed9f5b6beff9 100644
--- a/Core/Instrument/DetectorContext.h
+++ b/Core/Instrument/DetectorContext.h
@@ -24,7 +24,7 @@
 class IDetector2D;
 
 //! Holds precalculated information for faster SimulationElement generation.
-//! @ingroup simulation
+//! @ingroup detector
 
 class BA_CORE_API_ DetectorContext
 {
diff --git a/Core/Instrument/DetectorFunctions.h b/Core/Instrument/DetectorFunctions.h
index e3fc15556a5f965745e031fb8a9d82b7c9079962..b92aa2095a6f8d817be8c86317228d02ef3fe356 100644
--- a/Core/Instrument/DetectorFunctions.h
+++ b/Core/Instrument/DetectorFunctions.h
@@ -26,7 +26,7 @@ class IDetector;
 class SimulationAreaIterator;
 
 //! Contains set of detector-related convenience functions.
-//! @ingroup simulation
+//! @ingroup detector
 
 namespace DetectorFunctions
 {
diff --git a/Core/Instrument/DetectorMask.h b/Core/Instrument/DetectorMask.h
index 2bfd0827dd90be8c780208005dfc9680d9895824..9eba18a3b0545f50df947493cd020c1bf66c266e 100644
--- a/Core/Instrument/DetectorMask.h
+++ b/Core/Instrument/DetectorMask.h
@@ -23,7 +23,7 @@ template <class T> class OutputData;
 class Histogram2D;
 
 //! Collection of detector masks.
-//! @ingroup simulation
+//! @ingroup detector
 
 class BA_CORE_API_ DetectorMask
 {
diff --git a/Core/Instrument/IDetector.h b/Core/Instrument/IDetector.h
index 621e30cd42dea2328427208aefd2ab0672f274ac..30d509c201dcda883d91624416aaa56707f9c24c 100644
--- a/Core/Instrument/IDetector.h
+++ b/Core/Instrument/IDetector.h
@@ -32,7 +32,7 @@ class SimulationElement;
 class RegionOfInterest;
 
 //! Abstract detector interface.
-//! @ingroup simulation
+//! @ingroup detector
 
 class BA_CORE_API_ IDetector : public ICloneable, public INode
 {
diff --git a/Core/Instrument/IDetector2D.h b/Core/Instrument/IDetector2D.h
index 4e8c51d085547dae42bfbe528b2ee483cf1309d5..0cae2b6d1aa6b58c2feddc5e409127e7b0b77fd2 100644
--- a/Core/Instrument/IDetector2D.h
+++ b/Core/Instrument/IDetector2D.h
@@ -25,7 +25,7 @@ class IShape2D;
 class DetectorContext;
 
 //! Abstract 2D detector interface.
-//! @ingroup simulation
+//! @ingroup detector
 
 class BA_CORE_API_ IDetector2D : public IDetector
 {
diff --git a/Core/Instrument/IUnitConverter.h b/Core/Instrument/IUnitConverter.h
index 2ec6a994b20ddcbf88f7daec07c45947afa59a4a..8ec46344ec6c1b5863f0df76571f5364d4a8ab87 100644
--- a/Core/Instrument/IUnitConverter.h
+++ b/Core/Instrument/IUnitConverter.h
@@ -26,7 +26,7 @@ template <class T> class OutputData;
 
 //! Wrapper for detector axes units, required for a better representation of
 //! detector axes units in python
-//! @ingroup simulation
+//! @ingroup detector
 
 // workaround for SWIG (instead of just writing enum class AxesUnits...)
 struct BA_CORE_API_ AxesUnitsWrap {
diff --git a/Core/Instrument/Instrument.h b/Core/Instrument/Instrument.h
index fae13981395f8c5d65ead7ed8331d4ce7a9cd8d2..30d0e88d9052358e64053c219112a772d3d8d1b2 100644
--- a/Core/Instrument/Instrument.h
+++ b/Core/Instrument/Instrument.h
@@ -28,7 +28,7 @@ class IDetector2D;
 class IResolutionFunction2D;
 class SimulationElement;
 
-//! Assembles beam, detector and their relative positions wrt the sample.
+//! Assembles beam, detector and their relative positions with respect to the sample.
 //! @ingroup simulation_internal
 
 class BA_CORE_API_ Instrument : public INode
diff --git a/Core/Instrument/IsGISAXSDetector.h b/Core/Instrument/IsGISAXSDetector.h
index 84bf08cb99605ee347a90e2a89d20682a27101c5..ace9a82ea35e209acb61e7cd2f88eef0278d8ad8 100644
--- a/Core/Instrument/IsGISAXSDetector.h
+++ b/Core/Instrument/IsGISAXSDetector.h
@@ -18,7 +18,7 @@
 #include "SphericalDetector.h"
 
 //! A spherical detector used for validation with IsGISAXS results.
-//! @ingroup simulation
+//! @ingroup detector
 
 class BA_CORE_API_ IsGISAXSDetector : public SphericalDetector
 {
diff --git a/Core/Instrument/RectangularDetector.h b/Core/Instrument/RectangularDetector.h
index c23ff1e888036a23854c29ef0e514a138836f726..5a788e0b298e9e612b6613b1d0f15e7422c62e98 100644
--- a/Core/Instrument/RectangularDetector.h
+++ b/Core/Instrument/RectangularDetector.h
@@ -21,7 +21,7 @@
 class RectangularPixel;
 
 //! A flat rectangular detector with axes and resolution function.
-//! @ingroup simulation
+//! @ingroup detector
 
 class BA_CORE_API_ RectangularDetector : public IDetector2D
 {
diff --git a/Core/Instrument/RegionOfInterest.h b/Core/Instrument/RegionOfInterest.h
index fbbdb491d09de64f995531efa0ee74d156cf885c..096d6c62f0a40e76d699342484d6e57731b43793 100644
--- a/Core/Instrument/RegionOfInterest.h
+++ b/Core/Instrument/RegionOfInterest.h
@@ -25,7 +25,7 @@ class IAxis;
 template <class T> class OutputData;
 
 //! Defines rectangular area for the detector which will be simulated/fitted.
-//! @ingroup simulation
+//! @ingroup detector
 
 class BA_CORE_API_ RegionOfInterest : public ICloneable
 {
diff --git a/Core/Instrument/SimulationArea.h b/Core/Instrument/SimulationArea.h
index 83290bb526ae4fdd8bda4a8c7c13b753211f0f32..161e3d9b5c561c6620a84e44172a392056c14ca8 100644
--- a/Core/Instrument/SimulationArea.h
+++ b/Core/Instrument/SimulationArea.h
@@ -22,7 +22,7 @@ class IDetector;
 
 //! Holds iteration logic over active detector channels in the presence of masked areas
 //! and RegionOfInterest defined.
-//! @ingroup simulation
+//! @ingroup detector
 
 class BA_CORE_API_ SimulationArea
 {
@@ -57,7 +57,7 @@ inline size_t SimulationArea::totalSize() const
 
 //! Holds iteration logic over active detector channels in the presence of ROI. On the contrary
 //! to SimulationArea class, iterates also over masked areas.
-//! @ingroup simulation
+//! @ingroup detector
 
 class BA_CORE_API_ SimulationRoiArea : public SimulationArea
 {
diff --git a/Core/Instrument/SimulationAreaIterator.h b/Core/Instrument/SimulationAreaIterator.h
index 0cce544e90bfad4e1687f25487459d1b602a184b..7ccc9a34f82354ca5c6247dd7b85b174724c3a9f 100644
--- a/Core/Instrument/SimulationAreaIterator.h
+++ b/Core/Instrument/SimulationAreaIterator.h
@@ -20,7 +20,7 @@
 class SimulationArea;
 
 //! An iterator for SimulationArea.
-//! @ingroup simulation
+//! @ingroup detector
 
 class BA_CORE_API_ SimulationAreaIterator
 {
diff --git a/Core/Instrument/SimulationResult.h b/Core/Instrument/SimulationResult.h
index 8701d1a7680789aea9ff0bf5f7c45eab75d017fc..9916cc1b26a3a7d20c29b873f413ee10549f3a17 100644
--- a/Core/Instrument/SimulationResult.h
+++ b/Core/Instrument/SimulationResult.h
@@ -27,7 +27,7 @@ class IAxis;
 template <class T> class OutputData;
 
 //! Information about an axis in specific units. Can be used for plotting.
-//! @ingroup simulation
+//! @ingroup detector
 
 struct AxisInfo {
     std::string m_name;
@@ -36,7 +36,7 @@ struct AxisInfo {
 };
 
 //! Wrapper around OutputData<double> that also provides unit conversions.
-//! @ingroup simulation
+//! @ingroup detector
 
 class BA_CORE_API_ SimulationResult
 {
diff --git a/Core/Instrument/SpecularDetector1D.h b/Core/Instrument/SpecularDetector1D.h
index c5a355b6fe5a65488351227cfe074cd956d0f824..517d71b805c9c6e450ce5a049b3bce69921a3d19 100644
--- a/Core/Instrument/SpecularDetector1D.h
+++ b/Core/Instrument/SpecularDetector1D.h
@@ -20,7 +20,7 @@
 class SpecularSimulationElement;
 
 //! 1D detector for specular simulations. Use of this detector is deprecated.
-//! @ingroup simulation
+//! @ingroup detector
 
 class BA_CORE_API_ SpecularDetector1D : public IDetector
 {
diff --git a/Core/Instrument/SphericalDetector.h b/Core/Instrument/SphericalDetector.h
index f74b2622ef357918056a28ef13aa0bd0a52a39a0..60c489ea52d14ddb25d84f3df79a38204f8eee64 100644
--- a/Core/Instrument/SphericalDetector.h
+++ b/Core/Instrument/SphericalDetector.h
@@ -20,7 +20,7 @@
 
 //! A spherical detector with axes and resolution function.
 //! SphericalDetector
-//! @ingroup simulation
+//! @ingroup detector
 
 class BA_CORE_API_ SphericalDetector : public IDetector2D
 {
diff --git a/Core/Multilayer/KzComputation.h b/Core/Multilayer/KzComputation.h
index da6e900f3c49ce261a5e0b71535b6f943927c386..ab07db0474a30072673ad06aad8afc31aa183e5d 100644
--- a/Core/Multilayer/KzComputation.h
+++ b/Core/Multilayer/KzComputation.h
@@ -24,7 +24,7 @@ class Slice;
 
 //! Namespace containing functions for computing kz values for given multilayer and k (or kz) value
 //! on the surface of the sample.
-//! @ingroup simulation
+//! @ingroup samples_internal
 
 namespace KzComputation
 {
diff --git a/Doc/Doxygen/defgroups.dox b/Doc/Doxygen/defgroups.dox
index 37c59035309de42de8f96d138fda45ebb0349990..8072c38dd108522b0f89ffeb3ec697935b786d8c 100644
--- a/Doc/Doxygen/defgroups.dox
+++ b/Doc/Doxygen/defgroups.dox
@@ -3,6 +3,12 @@
 \defgroup simulation Simulation description
 @brief Classes to describe beam, detector and run the simulation.
 
+\defgroup beam
+@brief Classes to describe the incoming beam and its footprint in the sample plane
+
+\defgroup detector
+@brief Classes to describe a detector
+
 \defgroup mask Detector masks
 @brief Classes to construct a two-dimensional mask.
 
@@ -37,8 +43,8 @@
 
 \defgroup paramDistribution Parameter distributions
 
-\defgroup simulation_internal Simulation internals
-@brief Simulation internal classes.
+\defgroup simulation_internal Simulation and instrument internals
+@brief Internal classes concerned with simulations and instrument
 
 \defgroup samples_internal Sample internals
 @brief Sample internal classes.
diff --git a/Doc/Doxygen/mainpage.dox b/Doc/Doxygen/mainpage.dox
index 514d31fd9f5b716cf6da32a61e2582f800b0b1b4..238aa7a5033c1de75d797fce03fa625d08db8446 100644
--- a/Doc/Doxygen/mainpage.dox
+++ b/Doc/Doxygen/mainpage.dox
@@ -1,20 +1,27 @@
 /*!
 \mainpage
 
-C++ API Reference of <a href="http://www.bornagainproject.org">BornAgain Project</a>, a software to simulate and fit grazing incidence small angle scattering.
+C++ API Reference of <a href="http://www.bornagainproject.org">BornAgain Project</a>,
+ an open-source software to simulate and fit
+ neutron and x-ray reflectometry and grazing-incidence small-angle scattering.
 
 <ul>
-<li> Section <a href="userapi.html">User API</a> contains list of main classes to run the simulation.
-<li> Section <a href="annotated.html">Full C++ API</a> contains a full list of classes belonging to the %BornAgain framework.
-<li> Section <a href="namespace.html">Namespace List</a> contains a full list of namespaces belonging to the %BornAgain framework.
-<li> Section <a href="files.html">File List</a> lets you browse the C++ source code.
+<li> Section <a href="userapi.html">User API</a>
+  contains list of main classes to run the simulation.
+<li> Section <a href="annotated.html">Full C++ API</a>
+  contains a full list of classes belonging to the %BornAgain framework.
+<li> Section <a href="namespace.html">Namespace List</a>
+  contains a full list of namespaces belonging to the %BornAgain framework.
+<li> Section <a href="files.html">File List</a>
+  lets you browse the C++ source code.
 
 </ul>
 
 
 <b> License: </b>
 <br>
-GNU General Public License v3 or higher
+<a href="https://github.com/scgmlz/BornAgain/blob/master/COPYING"
+  >GNU General Public License v3 or higher</a>
 <br>
 Copyright Forschungszentrum Jülich GmbH 2015-
 
@@ -23,8 +30,9 @@ Copyright Forschungszentrum Jülich GmbH 2015-
 <br>
 Scientific Computing Group at MLZ Garching.
 <br>
-Current maintainers: J. Carmona Loaiza, M. Ganeva, G. Pospelov, W. Van Herck, J. Wuttke, D. Yurov.
-<br>
-Former contributors: J. Burle, C. Durniak, J. M. Fisher.
+See file <a href="https://github.com/scgmlz/BornAgain/blob/master/AUTHORS">AUTHORS</a>
+
+<b> Citation:  </b>
+See file <a href="https://github.com/scgmlz/BornAgain/blob/master/CITATION">CITATION</a>
 
 */
diff --git a/Doc/Doxygen/userapi.dox b/Doc/Doxygen/userapi.dox
index 7e5373664278313c64f5507a62bd3356892c5eb0..0f0009f563a689b03ee883b0cec4204aa450c7d6 100644
--- a/Doc/Doxygen/userapi.dox
+++ b/Doc/Doxygen/userapi.dox
@@ -5,9 +5,15 @@ Here is a list of classes grouped in several categories to create the sample, de
 
 <ul>
 <li> \ref simulation "Simulation" <br>
-List of classes to describe beam, detector and run the simulation
+List of classes to run simulations
      <ul>
-     <li> \ref mask "Detector masks"
+     <li> \ref beam "Beam" <br>
+          List of classes to describe the beam, and its footprint in the sample plane
+     <li> \ref detector "Detector" <br>
+          List of classes to describe detectors
+          <ul>
+               <li> \ref mask "Detector masks"
+          </ul>
      </ul>
 <li> \ref samples "Samples" <br>
 List of classes to describe scattering sample
@@ -38,7 +44,7 @@ Fitting routines
 
 Here is a list of additional classes from internal API.
 <ul>
-<li> \ref simulation_internal "Simulation internals" <br>
+<li> \ref simulation_internal "Simulation and instrument internals" <br>
 <li> \ref samples_internal "Samples internals" <br>
 <li> \ref materials_internal "Materials internals" <br>
 <li> \ref formfactors_internal "Form factors internals" <br>