diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index caeb6e8c011c7e872701bc3fe723eeb43fad5050..81d0b861bad6a32bb6c665907892ac6ac8034061 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 stages:
   - prepare
   - build
@@ -18,7 +21,7 @@ clang-format:
   before_script:
     - apt-get -y install python3-pip
     - python3 -m pip install clang-format==9.0.0
-  script: 
+  script:
     - ./scripts/run-clang-format.sh
 
 # Build a debug version of EveryBeam from the base image
@@ -45,7 +48,7 @@ test-and-coverage:
     # Capture coverage
     - gcovr -r .. -e '.*/external/.*' -e '.*/CompilerIdCXX/.*' -e '.*/test/.*' -e '.*/demo/.*'
     - gcovr -r .. -e '.*/external/.*' -e '.*/CompilerIdCXX/.*' -e '.*/test/.*' -e '.*/demo/.*' --xml > coverage.xml
-    # Check whether pyeverybeam modules can be found from home directory after setting the PYTHONPATH 
+    # Check whether pyeverybeam modules can be found from home directory after setting the PYTHONPATH
     - PYVERSION=`python3 --version | grep -P -o ".*\s\K\d\.\d(?=\.\d)"`
     - export PYTHONPATH=${WORKDIR}/lib/python${PYVERSION}/site-packages
     - cd && python3 -c "import everybeam"
@@ -65,7 +68,7 @@ build-doc:
   stage: build
   except:
     - schedules
-  needs: ["build-base"]  
+  needs: ["build-base"]
   image: everybeam_base:${CI_COMMIT_SHORT_SHA}
   script:
     - EVERYBEAM_PATH=$PWD
@@ -91,7 +94,7 @@ build-compare-oskar:
     - mkdir -p /opt/oskar/build
     - cd /opt/oskar && git clone https://github.com/OxfordSKA/OSKAR.git
     # Check-out at specific version, before HDF5 got broken
-    - cd OSKAR && git checkout bb3f9112e20e1d5e9b91b695828f993ad6bc91ee 
+    - cd OSKAR && git checkout bb3f9112e20e1d5e9b91b695828f993ad6bc91ee
     - cd /opt/oskar/build
   script:
     # OSKAR cpp install
@@ -100,7 +103,7 @@ build-compare-oskar:
     - make install
     # Python install
     - export OSKAR_INC_DIR=/opt/oskar/include && export OSKAR_LIB_DIR=/opt/oskar/lib
-    - cd ./../OSKAR/python && python3 setup.py install 
+    - cd ./../OSKAR/python && python3 setup.py install
     - export PATH=/opt/oskar/bin:$PATH
     # Run OSKAR comparison, set some env variables for this session
     - export NPIXELS=8 && export APPLY_TRANSPOSE=OFF && MAX_ORDER=3 && TOLERANCE=1e-12
diff --git a/CMake/EveryBeamConfig.cmake.in b/CMake/EveryBeamConfig.cmake.in
index 6b1188d39d29ea033d7fec055dcdf4726393bdcc..22b8b6b80348cdb2844b448c84942c3ddcdd04d6 100644
--- a/CMake/EveryBeamConfig.cmake.in
+++ b/CMake/EveryBeamConfig.cmake.in
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # This is the cmake config script for EveryBeam.
 #
 # It sets the following variables:
diff --git a/CMake/EveryBeamConfigVersion.cmake.in b/CMake/EveryBeamConfigVersion.cmake.in
index 5aae94d457d1f46d88f8df596114fcb94f7bbddf..834c0b5bf190a15f573c3ffe768e4ac3ef33a1ec 100644
--- a/CMake/EveryBeamConfigVersion.cmake.in
+++ b/CMake/EveryBeamConfigVersion.cmake.in
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 set(PACKAGE_VERSION "@EVERYBEAM_VERSION@")
 
 # Check whether the requested PACKAGE_FIND_VERSION is compatible
diff --git a/CMake/FindBeamModel.cmake b/CMake/FindBeamModel.cmake
index 0fe92830973dd413ed8647240ef9c348c4dcb190..b5b994516676157d399a28a79d381ff02e5fa634 100644
--- a/CMake/FindBeamModel.cmake
+++ b/CMake/FindBeamModel.cmake
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # This module tries to find the BeamModel library on your system
 #
 # Once done this will define
diff --git a/CMake/FindCFITSIO.cmake b/CMake/FindCFITSIO.cmake
index a7497012967938dc775f439d800821b21707928a..335d5c4efa0f55aa7e2402d6db00b7a36611be22 100644
--- a/CMake/FindCFITSIO.cmake
+++ b/CMake/FindCFITSIO.cmake
@@ -11,25 +11,8 @@
 #                         (identical to CFITSIO_LIBRARY)
 #  CFITSIO_VERSION_STRING the found version of CFITSIO, padded to 3 digits
 
-# Copyright (C) 2009
-# ASTRON (Netherlands Institute for Radio Astronomy)
-# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-#
-# This file is part of the LOFAR software suite.
-# The LOFAR software suite is free software: you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as published
-# by the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# The LOFAR software suite is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-#
-# $Id$
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 if(NOT CFITSIO_FOUND)
 
diff --git a/CMake/FindCasacore.cmake b/CMake/FindCasacore.cmake
index 51d8339dfe4d799d639bc80a0028426c9478931d..f83fb899fa59f2f94de560383671cdbb7b8ab828 100644
--- a/CMake/FindCasacore.cmake
+++ b/CMake/FindCasacore.cmake
@@ -2,7 +2,7 @@
 # Usage:
 #   find_package(Casacore [REQUIRED] [COMPONENTS components...])
 # Valid components are:
-#   casa, coordinates, derivedmscal, fits, images, lattices, meas, 
+#   casa, coordinates, derivedmscal, fits, images, lattices, meas,
 #   measures, mirlib, ms, msfits, python, scimath, scimath_f, tables
 #
 # Note that most components are dependent on other (more basic) components.
@@ -16,17 +16,17 @@
 # The dependencies in this macro were generated against casacore release 2.0.
 #
 # Variables used by this module:
-#  CASACORE_ROOT_DIR         - Casacore root directory. 
+#  CASACORE_ROOT_DIR         - Casacore root directory.
 #
 # Variables defined by this module:
 #  CASACORE_FOUND            - System has Casacore, which means that the
-#                              include dir was found, as well as all 
+#                              include dir was found, as well as all
 #                              libraries specified (not cached)
 #  CASACORE_INCLUDE_DIR      - Casacore include directory (cached)
 #  CASACORE_INCLUDE_DIRS     - Casacore include directories (not cached)
 #                              identical to CASACORE_INCLUDE_DIR
 #  CASACORE_LIBRARIES        - The Casacore libraries (not cached)
-#  CASA_${COMPONENT}_LIBRARY - The absolute path of Casacore library 
+#  CASA_${COMPONENT}_LIBRARY - The absolute path of Casacore library
 #                              "component" (cached)
 #  HAVE_AIPSPP               - True if system has Casacore (cached)
 #                              for backward compatibility with AIPS++
@@ -38,29 +38,12 @@
 # ATTENTION: The component names need to be in lower case, just as the
 # casacore library names. However, the CMake variables use all upper case.
 
-# Copyright (C) 2009-2015
-# ASTRON (Netherlands Institute for Radio Astronomy)
-# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-#
-# This file is part of the LOFAR software suite.
-# The LOFAR software suite is free software: you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as published
-# by the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# The LOFAR software suite is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-#
-# $Id: FindCasacore.cmake 31570 2015-05-07 09:49:56Z loose $
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 # - casacore_resolve_dependencies(_result)
 #
-# Resolve the Casacore library dependencies for the given components. 
+# Resolve the Casacore library dependencies for the given components.
 # The list of dependent libraries will be returned in the variable result.
 # It is sorted from least dependent to most dependent library, so it can be
 # directly fed to the linker.
@@ -71,7 +54,7 @@ macro(casacore_resolve_dependencies _result)
   set(${_result} ${ARGN})
   set(_index 0)
   # Do a breadth-first search through the dependency graph; append to the
-  # result list the dependent components for each item in that list. 
+  # result list the dependent components for each item in that list.
   # Duplicates will be removed later.
   while(1)
     list(LENGTH ${_result} _length)
@@ -92,7 +75,7 @@ endmacro(casacore_resolve_dependencies _result)
 
 # - casacore_find_library(_name)
 #
-# Search for the library ${_name}. 
+# Search for the library ${_name}.
 # If library is found, add it to CASACORE_LIBRARIES; if not, add ${_name}
 # to CASACORE_MISSING_COMPONENTS and set CASACORE_FOUND to false.
 #
@@ -264,4 +247,3 @@ else(CASACORE_FOUND)
     message(STATUS "${CASACORE_ERROR_MESSAGE}")
   endif(Casacore_FIND_REQUIRED)
 endif(CASACORE_FOUND)
-
diff --git a/CMake/FindFFTW3.cmake b/CMake/FindFFTW3.cmake
index 64588870a6d060d24d51b9712b99efb352ceb579..ecaad064396c0ba5945562907f5b4165b024a6fc 100644
--- a/CMake/FindFFTW3.cmake
+++ b/CMake/FindFFTW3.cmake
@@ -8,31 +8,14 @@
 #  FFTW3_INCLUDE_DIR          - the FFTW3 include directory (cached)
 #  FFTW3_INCLUDE_DIRS         - the FFTW3 include directories
 #                               (identical to FFTW3_INCLUDE_DIR)
-#  FFTW3[FL]?_LIBRARY         - the FFTW3 library - double, single(F), 
+#  FFTW3[FL]?_LIBRARY         - the FFTW3 library - double, single(F),
 #                               long-double(L) precision (cached)
-#  FFTW3[FL]?_THREADS_LIBRARY - the threaded FFTW3 library - double, single(F), 
+#  FFTW3[FL]?_THREADS_LIBRARY - the threaded FFTW3 library - double, single(F),
 #                               long-double(L) precision (cached)
 #  FFTW3_LIBRARIES            - list of all FFTW3 libraries found
 
-# Copyright (C) 2009-2010
-# ASTRON (Netherlands Institute for Radio Astronomy)
-# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-#
-# This file is part of the LOFAR software suite.
-# The LOFAR software suite is free software: you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as published
-# by the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# The LOFAR software suite is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-#
-# $Id: FindFFTW3.cmake 15918 2010-06-25 11:12:42Z loose $
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 # Use double precision by default.
 if(FFTW3_FIND_COMPONENTS MATCHES "^$")
@@ -82,7 +65,7 @@ foreach(_lib ${_libraries})
 endforeach(_lib ${_libraries})
 
 # Search for the header file.
-find_path(FFTW3_INCLUDE_DIR fftw3.h 
+find_path(FFTW3_INCLUDE_DIR fftw3.h
   HINTS ${FFTW3_ROOT_DIR} $ENV{FFTW3_ROOT_DIR} PATH_SUFFIXES include)
 mark_as_advanced(FFTW3_INCLUDE_DIR)
 list(APPEND _check_list FFTW3_INCLUDE_DIR)
diff --git a/CMake/FindPython.cmake b/CMake/FindPython.cmake
index 86ed1ae54f7995581e258b11c6b701b901f8fb28..de2ef3e4018c3a3bc979302fbd3e2e6746a463c1 100644
--- a/CMake/FindPython.cmake
+++ b/CMake/FindPython.cmake
@@ -1,4 +1,4 @@
-# - Try to find the Python interpreter, Python header files and libraries. 
+# - Try to find the Python interpreter, Python header files and libraries.
 # This macro effectively wraps the FindPythonInterp and FindPythonLibs macros
 # provided by CMake.
 #
@@ -10,25 +10,8 @@
 #  PYTHON_BUILD_DIR    - build directory for Python extensions (cached)
 #  PYTHON_INSTALL_DIR  - installation directory for Python extensions (cached)
 
-# Copyright (C) 2009
-# ASTRON (Netherlands Institute for Radio Astronomy)
-# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-#
-# This file is part of the LOFAR software suite.
-# The LOFAR software suite is free software: you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as published
-# by the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# The LOFAR software suite is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-#
-# $Id: FindPython.cmake 22948 2012-11-23 08:54:47Z loose $
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 # Set options string to pass to the find_package() commands below.
 set(_options ${Python_FIND_VERSION})
@@ -59,4 +42,3 @@ set(PYTHON_FOUND FALSE)
 if(PYTHONINTERP_FOUND AND PYTHONLIBS_FOUND)
   set(PYTHON_FOUND TRUE)
 endif(PYTHONINTERP_FOUND AND PYTHONLIBS_FOUND)
-
diff --git a/CMake/FindWCSLIB.cmake b/CMake/FindWCSLIB.cmake
index 4327084374c6d653f44f4cd12e7c25e599bc5b22..a163c9be289b1daa93cedff44d2c239e879f574b 100644
--- a/CMake/FindWCSLIB.cmake
+++ b/CMake/FindWCSLIB.cmake
@@ -11,25 +11,8 @@
 #                        (identical to WCSLIB_LIBRARY)
 #  WCSLIB_VERSION_STRING the found version of WCSLIB
 
-# Copyright (C) 2009
-# ASTRON (Netherlands Institute for Radio Astronomy)
-# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-#
-# This file is part of the LOFAR software suite.
-# The LOFAR software suite is free software: you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as published
-# by the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# The LOFAR software suite is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-#
-# $Id$
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 if(NOT WCSLIB_FOUND)
 
diff --git a/CMake/PythonInstall.cmake b/CMake/PythonInstall.cmake
index 173f99558b17b443f83b1ee7712981ad8f6cb3d9..bdd6c6c3ca7d471ce0e38c9c4d4e49f96ed24fb6 100644
--- a/CMake/PythonInstall.cmake
+++ b/CMake/PythonInstall.cmake
@@ -3,25 +3,8 @@
 # Install Python source files and byte-compile them in the directory
 # ${PYTHON_INSTALL_DIR}/${install_dir}.
 
-# Copyright (C) 2008-2009
-# ASTRON (Netherlands Foundation for Research in Astronomy)
-# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands, softwaresupport@astron.nl
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-#
-# $Id: PythonInstall.cmake 32905 2015-11-17 15:31:54Z schaap $
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 # Search for the Python interpreter.
 find_package(PythonInterp)
@@ -32,7 +15,7 @@ if(PYTHON_EXECUTABLE)
     "from distutils.sysconfig import get_python_lib"
     "from os.path import join"
     "print(join(
-       get_python_lib(plat_specific=True, standard_lib=True, prefix=''), 
+       get_python_lib(plat_specific=True, standard_lib=True, prefix=''),
        'site-packages'))"
   )
   execute_process(
@@ -43,14 +26,14 @@ if(PYTHON_EXECUTABLE)
   if(_pyerr)
     message(FATAL_ERROR "Python command failed:\n${_pyerr}")
   endif(_pyerr)
-  
+
   if(NOT DEFINED PYTHON_BUILD_DIR)
     set(_PRINT_PYTHON_DIRS TRUE)
   endif()
-  
-  set(PYTHON_BUILD_DIR "${CMAKE_BINARY_DIR}/${_pydir}" CACHE PATH 
+
+  set(PYTHON_BUILD_DIR "${CMAKE_BINARY_DIR}/${_pydir}" CACHE PATH
     "Build directory for Python extensions" FORCE)
-  set(PYTHON_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${_pydir}" CACHE PATH 
+  set(PYTHON_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${_pydir}" CACHE PATH
     "Installation directory for Python extensions" FORCE)
 
   if(_PRINT_PYTHON_DIRS)
@@ -105,8 +88,8 @@ macro(python_install)
   foreach(_py ${_py_files})
     get_filename_component(_py_path ${_py} PATH)
     get_filename_component(_py_abs ${_py} ABSOLUTE)
-    
-    # check if _py is a path in CMAKE_BINARY_DIR. If so, then it is most likely a configured_file. 
+
+    # check if _py is a path in CMAKE_BINARY_DIR. If so, then it is most likely a configured_file.
     # then strip the CMAKE_CURRENT_BINARY_DIR prefix.
     if(${_py} MATCHES "^(${CMAKE_CURRENT_BINARY_DIR})")
       string(REGEX REPLACE "^(${CMAKE_CURRENT_BINARY_DIR}/)" "" _py "${_py}")
@@ -124,7 +107,7 @@ macro(python_install)
         "destdir = os.environ.get('DESTDIR','')"
         "print('-- Byte-compiling: %s${_inst_dir}/${_py}' % destdir)"
         "py_compile.compile('%s${DESTDIR}${_inst_dir}/${_py}' % destdir, doraise=True)")
-      install(CODE 
+      install(CODE
         "execute_process(COMMAND ${PYTHON_EXECUTABLE} -c \"${_py_code}\"
                        RESULT_VARIABLE _result)
        if(NOT _result EQUAL 0)
@@ -140,8 +123,8 @@ macro(python_install)
     set(_init_dir "${_init_dir}/${_dir}")
     execute_process(COMMAND ${CMAKE_COMMAND} -E touch
       "${PYTHON_BUILD_DIR}${_init_dir}/__init__.py")
-    install(CODE 
-      "execute_process(COMMAND ${CMAKE_COMMAND} -E touch 
+    install(CODE
+      "execute_process(COMMAND ${CMAKE_COMMAND} -E touch
         \"\$ENV{DESTDIR}${PYTHON_INSTALL_DIR}${_init_dir}/__init__.py\")")
   endforeach(_dir ${_dir_list})
 
diff --git a/CMake/config.h.in b/CMake/config.h.in
index f511dd6bf0dc99d031bfb150d4812f21f0ea92fb..e22545df608b914b61c6bfcdc73d4349a0e2d3de 100644
--- a/CMake/config.h.in
+++ b/CMake/config.h.in
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_CONFIG_H_
 #define EVERYBEAM_CONFIG_H_
 
diff --git a/CMake/version.h.in b/CMake/version.h.in
index 5357c8ffb5f576e54caee66c1f42d0ea433165ee..14f7c642f6464cfad185d8ddb154dd8eedd48474 100644
--- a/CMake/version.h.in
+++ b/CMake/version.h.in
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_VERSION_H_
 #define EVERYBEAM_VERSION_H_
 
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c7aa1e0ee5192a938dbd39ee19afe995f3803c0f..b9a5d83d2b6db1d0091ac300ae4fc7ee10dfc477 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 #------------------------------------------------------------------------------
 # Top level CMakeLists.txt file for EveryBeam
 cmake_minimum_required(VERSION 3.0.0)
diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt
index 465e9967020f79c3bef9a4de8c20a4d334808ce5..0e15aa8d7de01974b1e19a871de7324b1797fa81 100644
--- a/cpp/CMakeLists.txt
+++ b/cpp/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 project(everybeam_cpp)
 
 #------------------------------------------------------------------------------
diff --git a/cpp/antenna.cc b/cpp/antenna.cc
index 1322c7469cbe0591c8d6e0b240e9ffb6d6042063..3c47755d7edca177b04b87b5f2257b042b3de9d9 100644
--- a/cpp/antenna.cc
+++ b/cpp/antenna.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "antenna.h"
 
 #include "common/mathutils.h"
diff --git a/cpp/antenna.h b/cpp/antenna.h
index b2d39f1b77041865121c134ef02640445c1c0e71..8470c095c9366e073a350ce3abf3aceb5a000179 100644
--- a/cpp/antenna.h
+++ b/cpp/antenna.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ANTENNA_H
 #define EVERYBEAM_ANTENNA_H
 
diff --git a/cpp/aterms/CMakeLists.txt b/cpp/aterms/CMakeLists.txt
index b273a22ef533ba0735e1d64cbcbfa8ce6b8cac93..3fb8ec292f5d1928f63d0712206a73238eedce71 100644
--- a/cpp/aterms/CMakeLists.txt
+++ b/cpp/aterms/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 install (FILES
 atermconfig.h
 parsetprovider.h
diff --git a/cpp/aterms/atermbase.cc b/cpp/aterms/atermbase.cc
index 7fe03754d62c317279a25d3188fc48503e24899e..9ddf909680e39242f7f8552add8077dd9193c91a 100644
--- a/cpp/aterms/atermbase.cc
+++ b/cpp/aterms/atermbase.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "atermbase.h"
 
 #include <aocommon/fits/fitswriter.h>
diff --git a/cpp/aterms/atermbase.h b/cpp/aterms/atermbase.h
index e2ea5a5e90b8e44f7adbbb37af8d8320d509736f..d2cda7e519c36fad62585e7488b4c370f1971c3e 100644
--- a/cpp/aterms/atermbase.h
+++ b/cpp/aterms/atermbase.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ATERMS_ATERM_BASE_H
 #define EVERYBEAM_ATERMS_ATERM_BASE_H
 
diff --git a/cpp/aterms/atermbeam.h b/cpp/aterms/atermbeam.h
index 006572c54d4012495916f148b751d4fc7138b79b..bd929e94431b85593194a37299c06d8923ef8177 100644
--- a/cpp/aterms/atermbeam.h
+++ b/cpp/aterms/atermbeam.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ATERMS_ATERM_BEAM_H
 #define EVERYBEAM_ATERMS_ATERM_BEAM_H
 
diff --git a/cpp/aterms/atermconfig.cc b/cpp/aterms/atermconfig.cc
index bf6ebb84681ccdae8ddc6df1faf5d3f81397052a..f905e628ab2477fff9847eac21459af02c1cb23d 100644
--- a/cpp/aterms/atermconfig.cc
+++ b/cpp/aterms/atermconfig.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "atermconfig.h"
 
 #include "atermbeam.h"
diff --git a/cpp/aterms/atermconfig.h b/cpp/aterms/atermconfig.h
index 37972f1cd8084d460c6271457c9ea32b02cd5daf..396e92978e300dbeba8b5aa4655dc97009b0880c 100644
--- a/cpp/aterms/atermconfig.h
+++ b/cpp/aterms/atermconfig.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ATERMS_ATERM_CONFIG_H
 #define EVERYBEAM_ATERMS_ATERM_CONFIG_H
 
diff --git a/cpp/aterms/atermresampler.cc b/cpp/aterms/atermresampler.cc
index d8d7f4c9adc824f56b79b9d9d4f03d4d8487730d..680d755fa6aaf3a5c5b64d1e16fa7eedc2061b57 100644
--- a/cpp/aterms/atermresampler.cc
+++ b/cpp/aterms/atermresampler.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "atermresampler.h"
 
 #include "../common/fftresampler.h"
diff --git a/cpp/aterms/atermresampler.h b/cpp/aterms/atermresampler.h
index 5a27cc939c90bf9c7e471a1d39567ff906c7e39a..de1d617c4159a862951a0eb83966492872ee3702 100644
--- a/cpp/aterms/atermresampler.h
+++ b/cpp/aterms/atermresampler.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ATERMS_ATERM_RESAMPLER_H
 #define EVERYBEAM_ATERMS_ATERM_RESAMPLER_H
 
diff --git a/cpp/aterms/cache.cc b/cpp/aterms/cache.cc
index 75992eb09f34a687aa5daa069e652296992cdca7..39e805feffc6aff81af465e3ac9fa71597c7e0c1 100644
--- a/cpp/aterms/cache.cc
+++ b/cpp/aterms/cache.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "cache.h"
 
 #include <limits>
diff --git a/cpp/aterms/cache.h b/cpp/aterms/cache.h
index 2840738cb6a79eae9c7ddd1349c83d41bc0399e6..70b2dac0e002a26d556dcd7d245425fd316ac1d3 100644
--- a/cpp/aterms/cache.h
+++ b/cpp/aterms/cache.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ATERM_CACHE_H
 #define EVERYBEAM_ATERM_CACHE_H
 
diff --git a/cpp/aterms/dldmaterm.cc b/cpp/aterms/dldmaterm.cc
index 88fe3e653c500f1e25076fb40275795f82dc1259..e2e9fd7626f2b6d028fdbfae288d383ec9d9f4a9 100644
--- a/cpp/aterms/dldmaterm.cc
+++ b/cpp/aterms/dldmaterm.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "dldmaterm.h"
 
 #include <aocommon/banddata.h>
diff --git a/cpp/aterms/dldmaterm.h b/cpp/aterms/dldmaterm.h
index b1ce06691d356344ce70e3c03ab0d39fce421de1..8af0b9a6f770c44665c0350bff1af3617d786ed9 100644
--- a/cpp/aterms/dldmaterm.h
+++ b/cpp/aterms/dldmaterm.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_DLDM_ATERM_H
 #define EVERYBEAM_DLDM_ATERM_H
 
diff --git a/cpp/aterms/everybeamaterm.cc b/cpp/aterms/everybeamaterm.cc
index 8e9c644e481f41a242c75a96a2b3ebcd2d29419c..6b3bf0c6657f3de233ecc20253dd4effd7466dbf 100644
--- a/cpp/aterms/everybeamaterm.cc
+++ b/cpp/aterms/everybeamaterm.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "everybeamaterm.h"
 
 #include "../load.h"
diff --git a/cpp/aterms/everybeamaterm.h b/cpp/aterms/everybeamaterm.h
index d8de21119b85d9e4be91ed901e4160d0f3818fbd..2b1ee006b77a44454ad2634be37fc0581c4a5984 100644
--- a/cpp/aterms/everybeamaterm.h
+++ b/cpp/aterms/everybeamaterm.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ATERMS_EVERYBEAMATERMS_H_
 #define EVERYBEAM_ATERMS_EVERYBEAMATERMS_H_
 
diff --git a/cpp/aterms/fitsaterm.cc b/cpp/aterms/fitsaterm.cc
index a234ba07508a53de1f37dbee2584a75f41ace105..7bdf0d38e80de195ca9c4267b04a0936cca60a1b 100644
--- a/cpp/aterms/fitsaterm.cc
+++ b/cpp/aterms/fitsaterm.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "fitsaterm.h"
 
 using everybeam::aterms::FitsATerm;
diff --git a/cpp/aterms/fitsaterm.h b/cpp/aterms/fitsaterm.h
index eccb231930f365b258ef0fc8b0b7c19d2ebcb2d3..e315adb83edc05717a71c41364aba15c822757d2 100644
--- a/cpp/aterms/fitsaterm.h
+++ b/cpp/aterms/fitsaterm.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ATERMS_FITS_ATERM_H
 #define EVERYBEAM_ATERMS_FITS_ATERM_H
 
diff --git a/cpp/aterms/fitsatermbase.cc b/cpp/aterms/fitsatermbase.cc
index 630d912b06368f6ec3f168134582c2bb03cf41ff..62624d152ad45622157d96175be9275fb248ba7b 100644
--- a/cpp/aterms/fitsatermbase.cc
+++ b/cpp/aterms/fitsatermbase.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "fitsatermbase.h"
 #include "atermresampler.h"
 
diff --git a/cpp/aterms/fitsatermbase.h b/cpp/aterms/fitsatermbase.h
index 2b5f42d924ef323ea2a3dc4ca7058264e933976d..18a817261f44981b9644879ccc11a42ef50f0cff 100644
--- a/cpp/aterms/fitsatermbase.h
+++ b/cpp/aterms/fitsatermbase.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ATERMS_FITS_ATERM_BASE_H
 #define EVERYBEAM_ATERMS_FITS_ATERM_BASE_H
 
diff --git a/cpp/aterms/pafbeamterm.cc b/cpp/aterms/pafbeamterm.cc
index 38cdf6084039d54149a606ff798d0f268532488a..8d9d895f169276984bd425f5b20f4c965053e1db 100644
--- a/cpp/aterms/pafbeamterm.cc
+++ b/cpp/aterms/pafbeamterm.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "pafbeamterm.h"
 
 #include <boost/algorithm/string.hpp>
diff --git a/cpp/aterms/pafbeamterm.h b/cpp/aterms/pafbeamterm.h
index 4b94313dba8b0e7d0eaef3b087a6b3ad08084d46..dfc37c44771ee1ceb0030b2da1e3e8c090db4165 100644
--- a/cpp/aterms/pafbeamterm.h
+++ b/cpp/aterms/pafbeamterm.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ATERMS_PAF_BEAM_TERM_H
 #define EVERYBEAM_ATERMS_PAF_BEAM_TERM_H
 
diff --git a/cpp/aterms/parsetprovider.h b/cpp/aterms/parsetprovider.h
index 1c5996bae4750b919610cf3063c70a52df87328f..52d66b1ea614c6e4d5152edcca23349dccfd88fc 100644
--- a/cpp/aterms/parsetprovider.h
+++ b/cpp/aterms/parsetprovider.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ATERMS_PARSETPROVIDER_H_
 #define EVERYBEAM_ATERMS_PARSETPROVIDER_H_
 
diff --git a/cpp/beamformer.cc b/cpp/beamformer.cc
index 89d524eae715a4c9e102e1a7e4e8b24fc20329a1..419709c1eb7283968e0c371bbbc46b8e2b8cc61f 100644
--- a/cpp/beamformer.cc
+++ b/cpp/beamformer.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "beamformer.h"
 
 #include "common/constants.h"
diff --git a/cpp/beamformer.h b/cpp/beamformer.h
index be959de7b869c83ea1b08721997906839cdff49b..884520ec45204a77bbb1f62d0524e5c0890dcc4a 100644
--- a/cpp/beamformer.h
+++ b/cpp/beamformer.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_BEAMFORMER_H
 #define EVERYBEAM_BEAMFORMER_H
 
diff --git a/cpp/beamformeridenticalantennas.cc b/cpp/beamformeridenticalantennas.cc
index 75b3ba99552f9979d320a6746cb06646594ae7af..0e721c16829c6d9a6c54318b2cb73e10a7341364 100644
--- a/cpp/beamformeridenticalantennas.cc
+++ b/cpp/beamformeridenticalantennas.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "beamformeridenticalantennas.h"
 
 #include "common/constants.h"
diff --git a/cpp/beamformeridenticalantennas.h b/cpp/beamformeridenticalantennas.h
index 26aedab2d48ff2c16423d3c72965b5a2bf0a4ce7..7022e1ca554509aa86162e2db9476456ec06cb72 100644
--- a/cpp/beamformeridenticalantennas.h
+++ b/cpp/beamformeridenticalantennas.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_BEAMFORMERIDENTICALANTENNAS_H
 #define EVERYBEAM_BEAMFORMERIDENTICALANTENNAS_H
 
diff --git a/cpp/beamformerlofar.cc b/cpp/beamformerlofar.cc
index 0d9e33b2dc933bf5c858198615668ed38ecbd719..ec548b7481d2b013a3ce2b7900554abcfdf3d791 100644
--- a/cpp/beamformerlofar.cc
+++ b/cpp/beamformerlofar.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "beamformerlofar.h"
 
 #include "common/constants.h"
diff --git a/cpp/beamformerlofar.h b/cpp/beamformerlofar.h
index 80cf92823c0acdfe9a5a8c07f88086627f6dff52..4c9663f2ffb45d798e27894a6d7f1a0747807936 100644
--- a/cpp/beamformerlofar.h
+++ b/cpp/beamformerlofar.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_BEAMFORMERLOFAR_H
 #define EVERYBEAM_BEAMFORMERLOFAR_H
 
diff --git a/cpp/beamformerlofarhba.cc b/cpp/beamformerlofarhba.cc
index e3a2baf1446948d8034d5f01e3d2dc99272e8b24..0ebce37ef7818ffe9712cb1438885d7e1686f3c3 100644
--- a/cpp/beamformerlofarhba.cc
+++ b/cpp/beamformerlofarhba.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "beamformerlofarhba.h"
 #include "common/mathutils.h"
 
diff --git a/cpp/beamformerlofarhba.h b/cpp/beamformerlofarhba.h
index b838d64a0fa2d5037a7295bd302f779a17eb773c..937f4ec450133f88754961acfa6c19704246cee0 100644
--- a/cpp/beamformerlofarhba.h
+++ b/cpp/beamformerlofarhba.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_BEAMFORMERLOFARHBA_H
 #define EVERYBEAM_BEAMFORMERLOFARHBA_H
 
diff --git a/cpp/beamformerlofarlba.cc b/cpp/beamformerlofarlba.cc
index 9cb841ad8df8fce31997598742c23cbc6d06bbdd..e85d9a291895cab36c57041b65893e3d50fac40b 100644
--- a/cpp/beamformerlofarlba.cc
+++ b/cpp/beamformerlofarlba.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "beamformerlofarlba.h"
 
 namespace everybeam {
diff --git a/cpp/beamformerlofarlba.h b/cpp/beamformerlofarlba.h
index c7a8db50a5cf8d790bfdf12953e939664ae914e5..9a580b26da1492a52115f0c02e625dc5b3825b2c 100644
--- a/cpp/beamformerlofarlba.h
+++ b/cpp/beamformerlofarlba.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_BEAMFORMERLOFARLBA_H
 #define EVERYBEAM_BEAMFORMERLOFARLBA_H
 
diff --git a/cpp/circularsymmetric/CMakeLists.txt b/cpp/circularsymmetric/CMakeLists.txt
index 1dbf27541ad0d67e7ac7abcc2d7f06af305a285a..368ef298f74022a2fa6558403ae315afe6aab566 100644
--- a/cpp/circularsymmetric/CMakeLists.txt
+++ b/cpp/circularsymmetric/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 install (FILES
   vlabeam.h
   voltagepattern.h
diff --git a/cpp/circularsymmetric/vlabeam.cc b/cpp/circularsymmetric/vlabeam.cc
index 27de521560cd5c34e8f5451950cf41c74f119447..9ed4e2714881fade24b96e30b7c324bd9f103569 100644
--- a/cpp/circularsymmetric/vlabeam.cc
+++ b/cpp/circularsymmetric/vlabeam.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "vlabeam.h"
 
 #include <cmath>
diff --git a/cpp/circularsymmetric/vlabeam.h b/cpp/circularsymmetric/vlabeam.h
index 33477d180dc52919bfa19c3bb57cef225418a4e7..c63d0b256b24ef0b165b35f857290e1ed8c891ed 100644
--- a/cpp/circularsymmetric/vlabeam.h
+++ b/cpp/circularsymmetric/vlabeam.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_CIRCULARSYMMETRIC_VLABEAM_H_
 #define EVERYBEAM_CIRCULARSYMMETRIC_VLABEAM_H_
 
diff --git a/cpp/circularsymmetric/voltagepattern.cc b/cpp/circularsymmetric/voltagepattern.cc
index 1983c3c743a04e687afd11627de86c9bbfdb14bb..0fdc8fb9a905b921a60d55a8a3f62d06239ff0cb 100644
--- a/cpp/circularsymmetric/voltagepattern.cc
+++ b/cpp/circularsymmetric/voltagepattern.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "voltagepattern.h"
 
 #include <aocommon/imagecoordinates.h>
diff --git a/cpp/circularsymmetric/voltagepattern.h b/cpp/circularsymmetric/voltagepattern.h
index 5044ff54d3032b280918681ed5c8161286e7897f..4bd79fa5b4231cf8e0c012dc9c12d4ff6df39d2d 100644
--- a/cpp/circularsymmetric/voltagepattern.h
+++ b/cpp/circularsymmetric/voltagepattern.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_CIRCULARSYMMETRIC_VOLTAGE_PATTERN_H_
 #define EVERYBEAM_CIRCULARSYMMETRIC_VOLTAGE_PATTERN_H_
 
diff --git a/cpp/common/CMakeLists.txt b/cpp/common/CMakeLists.txt
index d61c842af59936672cf332818564afffd5893bbd..cf9934c0e23d68c1ba7caba9d44d4e094999a072 100644
--- a/cpp/common/CMakeLists.txt
+++ b/cpp/common/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 install (FILES
   constants.h
   casautils.h
diff --git a/cpp/common/casautils.h b/cpp/common/casautils.h
index d7b6b8abe1e3c1d8ca3664980be5eb1a064d77dc..0b9f10969164e144d50acb7848b10678ee05fc50 100644
--- a/cpp/common/casautils.h
+++ b/cpp/common/casautils.h
@@ -1,25 +1,7 @@
 // casautils.h: CasaCore utilities.
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_COMMON_CASAUTIL_H_
 #define EVERYBEAM_COMMON_CASAUTIL_H_
diff --git a/cpp/common/constants.h b/cpp/common/constants.h
index c51235a301a2575189b6fc260fe67da23b97391a..420911ef08cd0d096d73bc08cae0ca5d07580f0e 100644
--- a/cpp/common/constants.h
+++ b/cpp/common/constants.h
@@ -1,24 +1,7 @@
 // constants.h: %Constants used in this library.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_CONSTANTS_H
 #define EVERYBEAM_CONSTANTS_H
diff --git a/cpp/common/fftresampler.cc b/cpp/common/fftresampler.cc
index c6b8a82f91cd270d1d876b5201f8a8bab536dad4..24a2a654161a885197bae71c803f91baa4071e7a 100644
--- a/cpp/common/fftresampler.cc
+++ b/cpp/common/fftresampler.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "fftresampler.h"
 
 #include <complex>
diff --git a/cpp/common/fftresampler.h b/cpp/common/fftresampler.h
index f6627e7000b8949956d2e5ea771d58619b805f3e..2c6a1b5086daf06696a2417bc5de3ff4eb21d24d 100644
--- a/cpp/common/fftresampler.h
+++ b/cpp/common/fftresampler.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_COMMON_FFT_RESAMPLE_H_
 #define EVERYBEAM_COMMON_FFT_RESAMPLE_H_
 
diff --git a/cpp/common/mathutils.h b/cpp/common/mathutils.h
index eaa569e11c8cbd9ce698358e97f516938e63306e..bce2ea3901718b0918d3a865b3e109a17638b41a 100644
--- a/cpp/common/mathutils.h
+++ b/cpp/common/mathutils.h
@@ -1,24 +1,7 @@
 // mathutils.h: Various mathematical operations on vectors and matrices.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_MATHUTIL_H
 #define EVERYBEAM_MATHUTIL_H
diff --git a/cpp/common/mutable_ptr.h b/cpp/common/mutable_ptr.h
index 1972f641fa966dd9e39adc314da47c37f7e9af60..876e250b486f6a80dc67699f2adf0328525a66a1 100644
--- a/cpp/common/mutable_ptr.h
+++ b/cpp/common/mutable_ptr.h
@@ -1,24 +1,7 @@
 // mutableptr.h: Representation of an LBA antenna field.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_MUTABLEPTR_H
 #define EVERYBEAM_MUTABLEPTR_H
diff --git a/cpp/common/singleton.h b/cpp/common/singleton.h
index 865899f6b698c71017e4fc03e53523b7991bd2ae..678739f0d9c8277034a611ce1fb97db3dbc81b9d 100644
--- a/cpp/common/singleton.h
+++ b/cpp/common/singleton.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_SINGLETON_H
 #define EVERYBEAM_SINGLETON_H
 
diff --git a/cpp/common/types.h b/cpp/common/types.h
index 35a440fcc265656a64712ee206e4d2e31d8e3d1c..b845faebe7c5c61de1002635d76cce0b3db6306e 100644
--- a/cpp/common/types.h
+++ b/cpp/common/types.h
@@ -1,24 +1,7 @@
 // types.h: Types used in this library.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_TYPES_H
 #define EVERYBEAM_TYPES_H
diff --git a/cpp/coords/CMakeLists.txt b/cpp/coords/CMakeLists.txt
index d0b52681bf595ef413698aa7059500b5dfe8e7c5..7380778d5c45d965461d4b1636eb3d62791d8a39 100644
--- a/cpp/coords/CMakeLists.txt
+++ b/cpp/coords/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 install (FILES
   itrfconverter.h
   itrfdirection.h
diff --git a/cpp/coords/coordutils.h b/cpp/coords/coordutils.h
index 7f9e637e92203744339562395e3941d12dba6e53..ad00f8196e130e178e9973753d90e6fad5204a1a 100644
--- a/cpp/coords/coordutils.h
+++ b/cpp/coords/coordutils.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_COORDS_COORDUTILS_H_
 #define EVERYBEAM_COORDS_COORDUTILS_H_
 
diff --git a/cpp/coords/itrfconverter.cc b/cpp/coords/itrfconverter.cc
index 79f956943986df1b1ca8f60ab34b2f186ec5b348..500ac55fa18d387dd27c7441d6c2f2fb89ede1a3 100644
--- a/cpp/coords/itrfconverter.cc
+++ b/cpp/coords/itrfconverter.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 // Dir2ITRF.cc: Convertor that maps time to an ITRF direction.
 
 #include "itrfdirection.h"
diff --git a/cpp/coords/itrfconverter.h b/cpp/coords/itrfconverter.h
index 18a178594dc636921a4de309438722ecdafa625a..3284a0480b603922b9cf0a7a94153beab8779f85 100644
--- a/cpp/coords/itrfconverter.h
+++ b/cpp/coords/itrfconverter.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 // itrfconverter.h: Convert time to an ITRF direction.
 
 #ifndef EVERYBEAM_DIR2ITRF_H
diff --git a/cpp/coords/itrfdirection.cc b/cpp/coords/itrfdirection.cc
index fb996d6f9d48bf84760b7724da4aa1c2a6cdf4fb..e82479c978190634ecb0c395ca3d3108d444d0e7 100644
--- a/cpp/coords/itrfdirection.cc
+++ b/cpp/coords/itrfdirection.cc
@@ -1,24 +1,7 @@
 // itrfdirection.cc: Functor that maps time to an ITRF direction.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #include "itrfdirection.h"
 
diff --git a/cpp/coords/itrfdirection.h b/cpp/coords/itrfdirection.h
index 4a4a0b7a2618c77b4266fa9656af93c587243e78..89b1dd5ca99f5a182c64919e52d8550a87bad6a3 100644
--- a/cpp/coords/itrfdirection.h
+++ b/cpp/coords/itrfdirection.h
@@ -1,24 +1,7 @@
 // itrfdirection.h: Functor that maps time to an ITRF direction.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_ITRFDIRECTION_H
 #define EVERYBEAM_ITRFDIRECTION_H
diff --git a/cpp/element.cc b/cpp/element.cc
index b1fc4ed5d40ec32c5d158c1e65dac4cff8315b0e..63f38e1de6baed6bfea5c02ed971314c32426afb 100644
--- a/cpp/element.cc
+++ b/cpp/element.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "element.h"
 #include "common/mathutils.h"
 
diff --git a/cpp/element.h b/cpp/element.h
index ea01dd850db45f1558dbf31a11e5b46097d2f7b1..299cf6c6968e5dbec0aa8be84bc1a63938bf70f4 100644
--- a/cpp/element.h
+++ b/cpp/element.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ELEMENT_H
 #define EVERYBEAM_ELEMENT_H
 
diff --git a/cpp/elementhamaker.cc b/cpp/elementhamaker.cc
index 4985f12acf2678acddda444428c28fc36bdd9283..004e5e1cb7644a3cea72d79f26dfad4dd755ef76 100644
--- a/cpp/elementhamaker.cc
+++ b/cpp/elementhamaker.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "elementhamaker.h"
 #include "common/mathutils.h"
 #include "common/constants.h"
diff --git a/cpp/elementhamaker.h b/cpp/elementhamaker.h
index ac3f699372f51835b58fda86ef586fc8fdbc3534..9aa526648b1922f966082222155c1639e2c6d1e9 100644
--- a/cpp/elementhamaker.h
+++ b/cpp/elementhamaker.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ELEMENT_HAMAKER_H
 #define EVERYBEAM_ELEMENT_HAMAKER_H
 
diff --git a/cpp/elementresponse.cc b/cpp/elementresponse.cc
index 643b4c16c170ddfbd11b92a0d8a278f7d7d19b96..7aa40c3cd7951bdadbd74cf6122f7eb07497704c 100644
--- a/cpp/elementresponse.cc
+++ b/cpp/elementresponse.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "elementresponse.h"
 
 namespace everybeam {
diff --git a/cpp/elementresponse.h b/cpp/elementresponse.h
index 6ca349975f97bb620d1023e314d2cf024d50cd3d..0462635a3584f281ecfd2ab8819e94aea4df7275 100644
--- a/cpp/elementresponse.h
+++ b/cpp/elementresponse.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_ELEMENTRESPONSE_H
 #define EVERYBEAM_ELEMENTRESPONSE_H
 
diff --git a/cpp/fieldresponse.h b/cpp/fieldresponse.h
index 781e60f0424faf6770381e7fa9bd6bb67bba7117..e51f17ccda01e0f0b331b5f28a1b86fc1a169751 100644
--- a/cpp/fieldresponse.h
+++ b/cpp/fieldresponse.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_FIELDRESPONSE_H
 #define EVERYBEAM_FIELDRESPONSE_H
 
diff --git a/cpp/griddedresponse/CMakeLists.txt b/cpp/griddedresponse/CMakeLists.txt
index 7b045982c3fb3552c7d6def0de329bb7777659a6..5fe47c76a14ef762b338c9cba691a83a576e235d 100644
--- a/cpp/griddedresponse/CMakeLists.txt
+++ b/cpp/griddedresponse/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 install (FILES
   griddedresponse.h
   lofargrid.h
diff --git a/cpp/griddedresponse/dishgrid.cc b/cpp/griddedresponse/dishgrid.cc
index f0e7b711ea1300a1b876f1c13a9dafd9285ccc77..7ff04762eed4e466a2abdc1e4f43516ed1c5081d 100644
--- a/cpp/griddedresponse/dishgrid.cc
+++ b/cpp/griddedresponse/dishgrid.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "dishgrid.h"
 #include "../telescope/dish.h"
 #include "../circularsymmetric/voltagepattern.h"
diff --git a/cpp/griddedresponse/dishgrid.h b/cpp/griddedresponse/dishgrid.h
index cf8e4279c909e02441b4b2122c26fcde70977e8f..2c229df1c97184b725a4e2f8a715387a750ed95e 100644
--- a/cpp/griddedresponse/dishgrid.h
+++ b/cpp/griddedresponse/dishgrid.h
@@ -1,25 +1,7 @@
 // dishgrid.h: Class for computing the circular symmetric (gridded) response.
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_GRIDDEDRESPONSE_DISHGRID_H_
 #define EVERYBEAM_GRIDDEDRESPONSE_DISHGRID_H_
diff --git a/cpp/griddedresponse/griddedresponse.cc b/cpp/griddedresponse/griddedresponse.cc
index 8883169241e529cbcee782a04f94eba3925fef46..694f1d4b39f4fcae49aa669c4b598db335f5c5a1 100644
--- a/cpp/griddedresponse/griddedresponse.cc
+++ b/cpp/griddedresponse/griddedresponse.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "griddedresponse.h"
 #include "../common/fftresampler.h"
 
diff --git a/cpp/griddedresponse/griddedresponse.h b/cpp/griddedresponse/griddedresponse.h
index fffebf554506050108380a960cad7f583f7be3c6..f0eaae91e526c76e4cd4a4d027e2c579e23529fa 100644
--- a/cpp/griddedresponse/griddedresponse.h
+++ b/cpp/griddedresponse/griddedresponse.h
@@ -1,25 +1,7 @@
 // griddedresponse.h: Base class for computing the (gridded) telescope response.
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_GRIDDEDRESPONSE_GRIDDEDRESPONSE_H_
 #define EVERYBEAM_GRIDDEDRESPONSE_GRIDDEDRESPONSE_H_
diff --git a/cpp/griddedresponse/lofargrid.h b/cpp/griddedresponse/lofargrid.h
index a790d6e106ffe4bc47cc5e6fff20e7113c6109f8..9db5cf6fd7dee9e59611bf860b79aaf28d02cb2c 100644
--- a/cpp/griddedresponse/lofargrid.h
+++ b/cpp/griddedresponse/lofargrid.h
@@ -1,25 +1,7 @@
 // lofargrid.h: Class for computing the LOFAR (gridded) response.
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_GRIDDEDRESPONSE_LOFARGRID_H_
 #define EVERYBEAM_GRIDDEDRESPONSE_LOFARGRID_H_
diff --git a/cpp/griddedresponse/mwagrid.cc b/cpp/griddedresponse/mwagrid.cc
index 3e15105ee9508fdf9e18f33dc26e8f5ba45b7fcd..10af31019be649e96a1cda604d801a29141f855a 100644
--- a/cpp/griddedresponse/mwagrid.cc
+++ b/cpp/griddedresponse/mwagrid.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "mwagrid.h"
 #include "../telescope/mwa.h"
 
diff --git a/cpp/griddedresponse/mwagrid.h b/cpp/griddedresponse/mwagrid.h
index 98e32dbe541b059d535ab814a9abdd8c94ee9490..a4f07c57f9c2d23b9eec5d4327d219aad618636b 100644
--- a/cpp/griddedresponse/mwagrid.h
+++ b/cpp/griddedresponse/mwagrid.h
@@ -1,25 +1,7 @@
 // mwagrid.h: Class for computing the circular symmetric (gridded) response.
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_GRIDDEDRESPONSE_MWAGRID_H_
 #define EVERYBEAM_GRIDDEDRESPONSE_MWAGRID_H_
diff --git a/cpp/griddedresponse/oskargrid.h b/cpp/griddedresponse/oskargrid.h
index 7ed35c873edc83872d0f0eec01b82c8fa640d4f0..2e4a3f763356eae73539b8261761c2ceda4b90c2 100644
--- a/cpp/griddedresponse/oskargrid.h
+++ b/cpp/griddedresponse/oskargrid.h
@@ -1,25 +1,7 @@
 // oskargrid.h: Class for computing the OSKAR (gridded) response.
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_GRIDDEDRESPONSE_OSKARGRID_H_
 #define EVERYBEAM_GRIDDEDRESPONSE_OSKARGRID_H_
diff --git a/cpp/griddedresponse/phasedarraygrid.cc b/cpp/griddedresponse/phasedarraygrid.cc
index b0c95cc8586492db82cb382b5924df26a1d600e5..929fc2af345d267a78accde8426dc4f52902fab0 100644
--- a/cpp/griddedresponse/phasedarraygrid.cc
+++ b/cpp/griddedresponse/phasedarraygrid.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "phasedarraygrid.h"
 #include "./../telescope/phasedarray.h"
 
diff --git a/cpp/griddedresponse/phasedarraygrid.h b/cpp/griddedresponse/phasedarraygrid.h
index 339db18d14d0bd1ac04d8790a7570c6b1413ab77..35f7c3006c298021279b6d1bb94edb5178ade51b 100644
--- a/cpp/griddedresponse/phasedarraygrid.h
+++ b/cpp/griddedresponse/phasedarraygrid.h
@@ -1,26 +1,8 @@
 // phasedarraygrid.h: Intermediate class for computing the gridded
 // response for phased array radio telescopes such as LOFAR and SKA(-LOW)
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_GRIDDEDRESPONSE_PHASEDARRAYGRID_H_
 #define EVERYBEAM_GRIDDEDRESPONSE_PHASEDARRAYGRID_H_
diff --git a/cpp/hamaker/CMakeLists.txt b/cpp/hamaker/CMakeLists.txt
index 744ff1b82f2fc8dc0addf4fd98b15aed78ac1397..ffb888abbdc46279371179dea7dfbda9d6aa2505 100644
--- a/cpp/hamaker/CMakeLists.txt
+++ b/cpp/hamaker/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # directory for config.h
 include_directories(${CMAKE_BINARY_DIR})
 
diff --git a/cpp/hamaker/hamakercoeff.cc b/cpp/hamaker/hamakercoeff.cc
index b43d3d54842db0a36e55847224884cd05c7d09b8..63310094ba1ad2be749560dd3e825f16c4e31781 100644
--- a/cpp/hamaker/hamakercoeff.cc
+++ b/cpp/hamaker/hamakercoeff.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "hamakercoeff.h"
 
 H5::CompType GetComplexDoubleType() {
diff --git a/cpp/hamaker/hamakercoeff.h b/cpp/hamaker/hamakercoeff.h
index 2525df9696ee91c5357fe61de687a2e3e5c7af97..4e9bf4556f9fb1e30f7d68dec64c6eb2b7012871 100644
--- a/cpp/hamaker/hamakercoeff.h
+++ b/cpp/hamaker/hamakercoeff.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef HAMAKER_COEFF_H
 #define HAMAKER_COEFF_H
 
diff --git a/cpp/hamaker/hamakerelementresponse.cc b/cpp/hamaker/hamakerelementresponse.cc
index 80726994f643ffc29b83bec3c5f8880f2e90f8ba..1f56cfb94a0b8c739a80653d62929d06202850c2 100644
--- a/cpp/hamaker/hamakerelementresponse.cc
+++ b/cpp/hamaker/hamakerelementresponse.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 // hamakerelementresponse.cc:
 // Functions to compute the (idealized) response of a LOFAR
 // LBA or HBA dual dipole antenna.
diff --git a/cpp/hamaker/hamakerelementresponse.h b/cpp/hamaker/hamakerelementresponse.h
index 5712185c8b455ac1ce2c5295ce1fdbe8207628bd..11303a1583fe12ff60b94feb92476bf1b1a53170 100644
--- a/cpp/hamaker/hamakerelementresponse.h
+++ b/cpp/hamaker/hamakerelementresponse.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef HAMAKER_ELEMENTRESPONSE_H
 #define HAMAKER_ELEMENTRESPONSE_H
 
diff --git a/cpp/load.cc b/cpp/load.cc
index 3deab5dab81b93d1e230715225b29f0ebffcdea7..07bdc3971c6c5f3a94d9850d662740c929d98ca3 100644
--- a/cpp/load.cc
+++ b/cpp/load.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "load.h"
 
 #include "telescope/lofar.h"
diff --git a/cpp/load.h b/cpp/load.h
index b5f367dc69bd1bea521502f5c18d30e2f03e2690..6830c29c9d6853999d45a2e48cd8ea8e97bddd4c 100644
--- a/cpp/load.h
+++ b/cpp/load.h
@@ -1,25 +1,7 @@
 // load_telescope.h: Main interface function for loading a telescope
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_LOAD_H_
 #define EVERYBEAM_LOAD_H_
diff --git a/cpp/lobes/CMakeLists.txt b/cpp/lobes/CMakeLists.txt
index 8065d4c8de04ce8de13f24386911877b8e693f05..d9a8cbb17218e04817c903b98698cd5311140984 100644
--- a/cpp/lobes/CMakeLists.txt
+++ b/cpp/lobes/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 #------------------------------------------------------------------------------
 # directory for config.h
 include_directories(${CMAKE_BINARY_DIR})
diff --git a/cpp/lobes/lobeselementresponse.cc b/cpp/lobes/lobeselementresponse.cc
index 7307ac1ba82dbe129b17466ad297bf275c07794b..14503d06df7ed95b865e63aa4a57ad9fc1bfa053 100644
--- a/cpp/lobes/lobeselementresponse.cc
+++ b/cpp/lobes/lobeselementresponse.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <cmath>
 
 #include "config.h"
diff --git a/cpp/lobes/lobeselementresponse.h b/cpp/lobes/lobeselementresponse.h
index ac0cf22b47c2f56a8f4f0c1bea7a5b2ff49ab62d..1d2467ef395ff59decec23d3a58e1c884e039abb 100644
--- a/cpp/lobes/lobeselementresponse.h
+++ b/cpp/lobes/lobeselementresponse.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_LOBES_ELEMENTRESPONSE_H
 #define EVERYBEAM_LOBES_ELEMENTRESPONSE_H
 
diff --git a/cpp/lofarreadutils.cc b/cpp/lofarreadutils.cc
index a4e448c10ca819ec93dfcd677940ed99f4849285..73652d05c46a984e307ee7519205337c9a470a17 100644
--- a/cpp/lofarreadutils.cc
+++ b/cpp/lofarreadutils.cc
@@ -1,25 +1,8 @@
 // lofarreadutils.cc: Utility functions to read the meta data relevant for
 // simulating the beam from LOFAR observations stored in MS format.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #include "lofarreadutils.h"
 #include "beamformeridenticalantennas.h"
diff --git a/cpp/lofarreadutils.h b/cpp/lofarreadutils.h
index 065521a3a41c213a176ca74b157f0dc9fbc74880..24eff9ab4e9410739a8d41da12890781bb69f4c7 100644
--- a/cpp/lofarreadutils.h
+++ b/cpp/lofarreadutils.h
@@ -1,25 +1,8 @@
 // lofarreadutils.h: Utility functions to read the meta data relevant for
 // simulating the beam from LOFAR observations stored in MS format.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_LOFARREADUTILS_H_
 #define EVERYBEAM_LOFARREADUTILS_H_
diff --git a/cpp/msv3readutils.cc b/cpp/msv3readutils.cc
index af2a56fb0f75bbe3040ed367b38e0c7146762c84..f3e64fc44ca901ff111a28d8c5bf93b470652f79 100644
--- a/cpp/msv3readutils.cc
+++ b/cpp/msv3readutils.cc
@@ -1,25 +1,8 @@
 // lofarreadutils.cc: Utility functions to read the meta data relevant for
 // simulating the beam from LOFAR observations stored in MS format.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #include "lofarreadutils.h"
 #include "beamformeridenticalantennas.h"
diff --git a/cpp/msv3readutils.h b/cpp/msv3readutils.h
index 87ddc183335ff0390810258eba2e645ff1997c2b..0bb84990d67d97740892928e6c9ddab92f18eeb2 100644
--- a/cpp/msv3readutils.h
+++ b/cpp/msv3readutils.h
@@ -1,25 +1,8 @@
 // msv3readutils.h: Utility functions to read the meta data relevant for
 // simulating the beam from OSKAR simulations stored in MS format.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_MSV3READUTILS_H_
 #define EVERYBEAM_MSV3READUTILS_H_
diff --git a/cpp/mwabeam/beam2016implementation.cc b/cpp/mwabeam/beam2016implementation.cc
index 0844e108b48defce5b402d67f9a33603f768fb5b..8b21ff7d28806d0b80a8576664bd8bf4910815cb 100644
--- a/cpp/mwabeam/beam2016implementation.cc
+++ b/cpp/mwabeam/beam2016implementation.cc
@@ -1,9 +1,10 @@
-/**
- * C++ implementation of Full Embeded Element beam model for MWA based on
- * beam_full_EE.py script and Sokolowski et al (2016) paper Implemented by
- * Marcin Sokolowski (May 2017) - marcin.sokolowski@curtin.edu.au 20 May 2017 :
- * Somewhat optimized by André Offringa.
- */
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+// C++ implementation of Full Embeded Element beam model for MWA based on
+// beam_full_EE.py script and Sokolowski et al (2016) paper Implemented by
+// Marcin Sokolowski (May 2017) - marcin.sokolowski@curtin.edu.au 20 May 2017 :
+// Somewhat optimized by André Offringa.
 
 #include <algorithm>
 #include <cmath>
diff --git a/cpp/mwabeam/beam2016implementation.h b/cpp/mwabeam/beam2016implementation.h
index 62b053c9d3f39ce8afecb9c4e115023ff6bfad20..ce0563cd75f4225931f966132f17e3f23b6c89df 100644
--- a/cpp/mwabeam/beam2016implementation.h
+++ b/cpp/mwabeam/beam2016implementation.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef _GET_FF_H__
 #define _GET_FF_H__
 
diff --git a/cpp/mwabeam/factorialtable.h b/cpp/mwabeam/factorialtable.h
index 274b78be367b464e89ddf4d65e54a208115ef184..01db4065e7ad93263c52bb73aadd9e8177bcd0d3 100644
--- a/cpp/mwabeam/factorialtable.h
+++ b/cpp/mwabeam/factorialtable.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_MWABEAM_FACTORIALTABLE_H_
 #define EVERYBEAM_MWABEAM_FACTORIALTABLE_H_
 
diff --git a/cpp/mwabeam/recursivelock.h b/cpp/mwabeam/recursivelock.h
index 3254adcf832a894154ac97224418beaa65cfd1cf..746af20f85f8f4b186d766af13b57b30d01b91c8 100644
--- a/cpp/mwabeam/recursivelock.h
+++ b/cpp/mwabeam/recursivelock.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_MWABEAM_RECURSIVELOCK_H_
 #define EVERYBEAM_MWABEAM_RECURSIVELOCK_H_
 
diff --git a/cpp/mwabeam/tilebeam2016.cc b/cpp/mwabeam/tilebeam2016.cc
index 06a400eaa0d0c0c0d42bf3271182b2068d5018a7..514c5bce40f2bcdd0784519670c09e24806ea249 100644
--- a/cpp/mwabeam/tilebeam2016.cc
+++ b/cpp/mwabeam/tilebeam2016.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "tilebeam2016.h"
 
 #include <casacore/measures/Measures/MDirection.h>
diff --git a/cpp/mwabeam/tilebeam2016.h b/cpp/mwabeam/tilebeam2016.h
index b61b50c498e58eb0060f0f82a43b232a40928d45..f9ab04a7d98687b9044a40e27ff5ab16f12ffd85 100644
--- a/cpp/mwabeam/tilebeam2016.h
+++ b/cpp/mwabeam/tilebeam2016.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef EVERYBEAM_MWABEAM_TILEBEAM2016_H_
 #define EVERYBEAM_MWABEAM_TILEBEAM2016_H_
 
diff --git a/cpp/options.h b/cpp/options.h
index 483a9ac95955e4929b73d531174627a0717c4d39..98531d8ceb4b3953b7fe02ee9a18fdd01f2ad335 100644
--- a/cpp/options.h
+++ b/cpp/options.h
@@ -1,25 +1,7 @@
 // Options.h: Class for specifying the telescope response options.
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_OPTIONS_H_
 #define EVERYBEAM_OPTIONS_H_
diff --git a/cpp/oskar/CMakeLists.txt b/cpp/oskar/CMakeLists.txt
index 988fcf61b86e39144e3591ee993ded09d5a66cd3..7c4ee818402844e24bb80d0684c3cfc78a1f30f4 100644
--- a/cpp/oskar/CMakeLists.txt
+++ b/cpp/oskar/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 #------------------------------------------------------------------------------
 # directory for config.h
 include_directories(${CMAKE_BINARY_DIR})
diff --git a/cpp/oskar/oskar.h b/cpp/oskar/oskar.h
index 4488412ecf729f9139395ade9255d9517dfb21af..872cf6015ad9f02dfe7db18a9b3a6c3d751d2c0e 100644
--- a/cpp/oskar/oskar.h
+++ b/cpp/oskar/oskar.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "oskar_vector_types.h"
 #include "oskar_helper.h"
 
diff --git a/cpp/oskar/oskardatafile.cc b/cpp/oskar/oskardatafile.cc
index 5e0717ac1437f118941aef51653e19570f30a2b3..08e192b94674c0625fb04052dc88f48cf3f7a03b 100644
--- a/cpp/oskar/oskardatafile.cc
+++ b/cpp/oskar/oskardatafile.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "oskardatafile.h"
 
 #include <iostream>
diff --git a/cpp/oskar/oskardatafile.h b/cpp/oskar/oskardatafile.h
index 9e18641931ce4b32f3a6312bc8f03bb43f28c623..36bdfc64ef4dc6f5ecdf0251445ed6d483161090 100644
--- a/cpp/oskar/oskardatafile.h
+++ b/cpp/oskar/oskardatafile.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef OSKAR_DATAFILE_H
 #define OSKAR_DATAFILE_H
 
diff --git a/cpp/oskar/oskardataset.cc b/cpp/oskar/oskardataset.cc
index fd654a3a861dd653aad2307eb18ad7383b456234..3c22177a54ee63ecc5e5a29ee2a64ad157674e77 100644
--- a/cpp/oskar/oskardataset.cc
+++ b/cpp/oskar/oskardataset.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <iostream>
 #include <cassert>
 #include <stdexcept>
diff --git a/cpp/oskar/oskardataset.h b/cpp/oskar/oskardataset.h
index 01c8f1ec01c332e6b0bc9c3aa4574fcace8fd83d..646dd11dba082417c4225c765ef90760fa83de5c 100644
--- a/cpp/oskar/oskardataset.h
+++ b/cpp/oskar/oskardataset.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef OSKAR_DATASET_H
 #define OSKAR_DATASET_H
 
diff --git a/cpp/oskar/oskarelementresponse.cc b/cpp/oskar/oskarelementresponse.cc
index 1609286575da7a29572ccf8703b60312bf92347d..2fdc8275fc5c522aaacf03374ca0e5c24ab3a528 100644
--- a/cpp/oskar/oskarelementresponse.cc
+++ b/cpp/oskar/oskarelementresponse.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "oskarelementresponse.h"
 #include "oskar.h"
 #include "config.h"
diff --git a/cpp/oskar/oskarelementresponse.h b/cpp/oskar/oskarelementresponse.h
index 6c897355b48ba83b98ab74031692cc76626dbebe..78c41e419bd15c8eee5a1dc2ab1f00378982d807 100644
--- a/cpp/oskar/oskarelementresponse.h
+++ b/cpp/oskar/oskarelementresponse.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #ifndef OSKAR_ELEMENTRESPONSE_H
 #define OSKAR_ELEMENTRESPONSE_H
 
diff --git a/cpp/station.cc b/cpp/station.cc
index 327df98c2f8a4c0830fa3a5389ba3588984b95ec..4bdee569cddc45cd3afb31bf73762a7cadf65bf6 100644
--- a/cpp/station.cc
+++ b/cpp/station.cc
@@ -1,24 +1,7 @@
 // Station.cc: Representation of the station beam former.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #include "station.h"
 #include "common/mathutils.h"
diff --git a/cpp/station.h b/cpp/station.h
index 7d1eff690c7a04eeaa3116b4b1d093353a524e59..87d74d44df5b183c637120a5614101166c00fa0c 100644
--- a/cpp/station.h
+++ b/cpp/station.h
@@ -1,25 +1,7 @@
 // station.h: Representation of the station beam former.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_STATION_H
 #define EVERYBEAM_STATION_H
diff --git a/cpp/telescope/CMakeLists.txt b/cpp/telescope/CMakeLists.txt
index 6ce5ccdf8ebf66a4543d802d407e4ba209c602e2..38b811017c8080c490ee311f1af24c2aa885461f 100644
--- a/cpp/telescope/CMakeLists.txt
+++ b/cpp/telescope/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # TODO: probably, we only need/want to expose the telescope.h header
 install (FILES
   dish.h
diff --git a/cpp/telescope/dish.cc b/cpp/telescope/dish.cc
index 43b568bc49845b62ac169c6b1c4ec8b52375d7b5..95984aa3caa8bded64fe53be931dc2024f71b337 100644
--- a/cpp/telescope/dish.cc
+++ b/cpp/telescope/dish.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "dish.h"
 #include "../griddedresponse/dishgrid.h"
 
diff --git a/cpp/telescope/dish.h b/cpp/telescope/dish.h
index e0a6b774b5906e4bb03efd4978b53f9239379928..c2255f4592e1580ebdec612934ec19a7efe246db 100644
--- a/cpp/telescope/dish.h
+++ b/cpp/telescope/dish.h
@@ -1,26 +1,8 @@
 // dish.h: Base class for dish telescopes (VLA, ATCA, ...).
 // Inherits from Telescope class.
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_TELESCOPE_DISH_H_
 #define EVERYBEAM_TELESCOPE_DISH_H_
diff --git a/cpp/telescope/lofar.cc b/cpp/telescope/lofar.cc
index b59e47eb4ca4797793ecf113a55e6c1087803561..22c40ea9c2f7aa1942d9ac454353c43a4e3217f9 100644
--- a/cpp/telescope/lofar.cc
+++ b/cpp/telescope/lofar.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "lofar.h"
 #include "../griddedresponse/lofargrid.h"
 #include "../common/mathutils.h"
diff --git a/cpp/telescope/lofar.h b/cpp/telescope/lofar.h
index 06e8160ab77b507bed0ee3bd6a53ac0d08eedb2c..c6541b5530c1c48706bbfc552e19fed483a9dafd 100644
--- a/cpp/telescope/lofar.h
+++ b/cpp/telescope/lofar.h
@@ -1,26 +1,8 @@
 // lofar.h: Base class for computing the response for the LOFAR
 // telescope.
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_TELESCOPE_LOFAR_H_
 #define EVERYBEAM_TELESCOPE_LOFAR_H_
diff --git a/cpp/telescope/mwa.cc b/cpp/telescope/mwa.cc
index fd5907dd991c08a50573bdad8714b0fba45ce7d3..4c57925e3e097058677bd5d756eb64cda0f24b65 100644
--- a/cpp/telescope/mwa.cc
+++ b/cpp/telescope/mwa.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "mwa.h"
 #include "../griddedresponse/mwagrid.h"
 
diff --git a/cpp/telescope/mwa.h b/cpp/telescope/mwa.h
index beeb989eaef6a3083a1ef05cc831ea9816c284d3..319f048fd541fdc2ca0124f7c6d7bfc8670a744e 100644
--- a/cpp/telescope/mwa.h
+++ b/cpp/telescope/mwa.h
@@ -1,26 +1,8 @@
 // mwa.h: Class for MWA telescopes.
 // Inherits from Telescope class.
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_TELESCOPE_MWA_H_
 #define EVERYBEAM_TELESCOPE_MWA_H_
diff --git a/cpp/telescope/oskar.cc b/cpp/telescope/oskar.cc
index 53c7dd8da0c1c70dfe6b797b9ef4eee47f4645b6..4a652a10efa4f35438afb3bbb5b2051eec0a1959 100644
--- a/cpp/telescope/oskar.cc
+++ b/cpp/telescope/oskar.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "oskar.h"
 #include "../griddedresponse/oskargrid.h"
 #include "../common/mathutils.h"
diff --git a/cpp/telescope/oskar.h b/cpp/telescope/oskar.h
index 553922b7ae3d4d8eb565b5bc9abf3a42c907b1a3..172e5dcd0741cb84e48bdef3c67ddbee13331d88 100644
--- a/cpp/telescope/oskar.h
+++ b/cpp/telescope/oskar.h
@@ -1,26 +1,8 @@
 // oskar.h: Base class for computing the response for the OSKAR
 // telescope.
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_TELESCOPE_OSKAR_H_
 #define EVERYBEAM_TELESCOPE_OSKAR_H_
diff --git a/cpp/telescope/phasedarray.h b/cpp/telescope/phasedarray.h
index 1d6fa3c983b56184f4b02099c534bd9ed44cbf64..3f46e5998d8cb4e1c274a85ca4c1e8f6b59cc766 100644
--- a/cpp/telescope/phasedarray.h
+++ b/cpp/telescope/phasedarray.h
@@ -1,26 +1,8 @@
 // phasedarray.h: Base class for computing the response for phased array
 // telescopes (e.g. LOFAR, SKA-LOW)
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_TELESCOPE_PHASEDARRAY_H_
 #define EVERYBEAM_TELESCOPE_PHASEDARRAY_H_
diff --git a/cpp/telescope/telescope.h b/cpp/telescope/telescope.h
index 06ed91b235cf8116e5fc53e4f4983e67c5e18f38..4952853023a9d6e554a7c63318fd03c5894a83a3 100644
--- a/cpp/telescope/telescope.h
+++ b/cpp/telescope/telescope.h
@@ -1,25 +1,7 @@
 // telescope.h: Base class for computing the Telescope response.
 //
-// Copyright (C) 2020
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the EveryBeam software suite.
-// The EveryBeam software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The EveryBeam software suite is distributed in the hope that it will be
-// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the EveryBeam software suite. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #ifndef EVERYBEAM_TELESCOPE_TELESCOPE_H_
 #define EVERYBEAM_TELESCOPE_TELESCOPE_H_
diff --git a/cpp/test/CMakeLists.txt b/cpp/test/CMakeLists.txt
index eefecf8953b9cfe3611485771752dbbfff36b1ef..67b28ecbc19b2bb1ba66355e26d58a494831fcf7 100644
--- a/cpp/test/CMakeLists.txt
+++ b/cpp/test/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # Find boost
 find_package(Boost COMPONENTS unit_test_framework)
 
diff --git a/cpp/test/runtests.cc b/cpp/test/runtests.cc
index 3052dcccae516635caf51805f5b1a350f82f968c..6cf629e05a6ae3ad707ecf76d7cd876437e1effe 100644
--- a/cpp/test/runtests.cc
+++ b/cpp/test/runtests.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #define BOOST_TEST_MODULE everybeam
 
 #include <boost/test/unit_test.hpp>
diff --git a/cpp/test/tcache.cc b/cpp/test/tcache.cc
index 30cbb9da9d42e03eed0708beda626689f5b80a7b..a6800dc9761b3dbe3c306e0274373ab851dfaf5e 100644
--- a/cpp/test/tcache.cc
+++ b/cpp/test/tcache.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <boost/test/unit_test.hpp>
 
 #include "../aterms/cache.h"
diff --git a/cpp/test/tlofar_hba.cc b/cpp/test/tlofar_hba.cc
index 9980002da7a6cad423782307096fc9113334ede3..d19e6f374e89e5df42396903ee4764edff4d89da 100644
--- a/cpp/test/tlofar_hba.cc
+++ b/cpp/test/tlofar_hba.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <boost/test/unit_test.hpp>
 #include <boost/test/tools/floating_point_comparison.hpp>
 
diff --git a/cpp/test/tlofar_lba.cc b/cpp/test/tlofar_lba.cc
index ae3038e62efb3da7b00fdcbd55734064cd1d36e3..a79f633111a489394f547c479bdea8b25755a0aa 100644
--- a/cpp/test/tlofar_lba.cc
+++ b/cpp/test/tlofar_lba.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <boost/test/unit_test.hpp>
 #include <boost/test/tools/floating_point_comparison.hpp>
 
diff --git a/cpp/test/tmwa.cc b/cpp/test/tmwa.cc
index e5d08a6b29f5d34d1bfdbddae4886ad693ef6a67..65b5cf28a4e7ed41a2cac046bfaf5d53ca3a1052 100644
--- a/cpp/test/tmwa.cc
+++ b/cpp/test/tmwa.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <boost/test/unit_test.hpp>
 
 #include "../load.h"
diff --git a/cpp/test/toskar.cc b/cpp/test/toskar.cc
index 68421c86a3ff2a3105797c9685921f6ad7c1dddb..d0a9a5688107c3a60560d078796240dad37f8183 100644
--- a/cpp/test/toskar.cc
+++ b/cpp/test/toskar.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <boost/test/unit_test.hpp>
 
 #include "../load.h"
diff --git a/cpp/test/tstation.cc b/cpp/test/tstation.cc
index b6eda72719edc0cc719dbfb59101206ad4cccac2..4a4cc0280ce415e4753d1dcaabd2f455a2f6930a 100644
--- a/cpp/test/tstation.cc
+++ b/cpp/test/tstation.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "./../station.h"
 
 #include <boost/test/unit_test.hpp>
diff --git a/cpp/test/tvla.cc b/cpp/test/tvla.cc
index ebc37ab8995cf1c40aca7b1f28887cb5346e6ba1..d034441c2c5b1b03471c3bad616a3522eca31364 100644
--- a/cpp/test/tvla.cc
+++ b/cpp/test/tvla.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <boost/test/unit_test.hpp>
 
 #include "../load.h"
diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt
index 5538b3ad952f9cb418e556ae6afd0237aebf2531..ee9ea5a1d4640063d4527259bffed5afde5c64f0 100644
--- a/demo/CMakeLists.txt
+++ b/demo/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 add_subdirectory(comparison-oskar)
 add_subdirectory(wsclean-oskar)
 
diff --git a/demo/beam-helper.cpp b/demo/beam-helper.cpp
index 402cd1f50ff971e00e35f24e36b762f806208481..df5b1469a2b3f185b8ca051c04baaccbcbf1efce 100644
--- a/demo/beam-helper.cpp
+++ b/demo/beam-helper.cpp
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "beam-helper.h"
 
 #include <aocommon/imagecoordinates.h>
diff --git a/demo/beam-helper.h b/demo/beam-helper.h
index ab40eeb4d559b533996fae2f0f84db883c153ef2..03e15fca221d5a911e166a993c12af7f53deb3b8 100644
--- a/demo/beam-helper.h
+++ b/demo/beam-helper.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "../cpp/elementresponse.h"
 #include "../cpp/station.h"
 #include "../cpp/lofarreadutils.h"
diff --git a/demo/comparison-oskar/CMakeLists.txt b/demo/comparison-oskar/CMakeLists.txt
index f066cfd8cd2180020def84be024adba41ebf5974..8f0e939a3cc6673d4d7106216dd4f828dc631e99 100644
--- a/demo/comparison-oskar/CMakeLists.txt
+++ b/demo/comparison-oskar/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 #------------------------------------------------------------------------------
 # CMake file for compiling a comparison between OSKAR and EveryBeam
 add_executable(make_element_response_image make_element_response_image.cpp)
diff --git a/demo/comparison-oskar/compare_stationresponse.py b/demo/comparison-oskar/compare_stationresponse.py
index b78457dc53b7b0da4853f0b5dc497a8e56b7453d..92c50e6a6727ad4ea4622fc0e282e8ae3ff31c03 100644
--- a/demo/comparison-oskar/compare_stationresponse.py
+++ b/demo/comparison-oskar/compare_stationresponse.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 import os
 import numpy as np
 from read_oskar_beams import read_oskar_beams
@@ -20,4 +23,3 @@ A = read_oskar_beams()
 B = np.load('station-response.npy')
 
 check_tolerance(tolerance, A, B)
-
diff --git a/demo/comparison-oskar/compare_stationresponse.sh b/demo/comparison-oskar/compare_stationresponse.sh
index 8906541512e3b216037ae812735a1ba42a9cd06d..1f8d4397c6e4649a357a74cfc3fda2e61d81065b 100755
--- a/demo/comparison-oskar/compare_stationresponse.sh
+++ b/demo/comparison-oskar/compare_stationresponse.sh
@@ -1,5 +1,6 @@
 #!/bin/sh
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 export PATH=$EXTRA_PATH:$PATH
 python3 -B `dirname "${0}"`/compare_stationresponse.py
-
diff --git a/demo/comparison-oskar/generate_basefunction_plots.py b/demo/comparison-oskar/generate_basefunction_plots.py
index 3f7a8735b96040c2849ad9c742b0776be78d584e..d12c0bebdee73369bbaa646f62519d742a8591bc 100644
--- a/demo/comparison-oskar/generate_basefunction_plots.py
+++ b/demo/comparison-oskar/generate_basefunction_plots.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 import os
 import sys
 import numpy as np
diff --git a/demo/comparison-oskar/generate_basefunction_plots.sh b/demo/comparison-oskar/generate_basefunction_plots.sh
index 9be17d4aeec795fa80332f26f64fac4fdfad998a..fa949810207375e2a4bac2ba4991819dc41252d8 100755
--- a/demo/comparison-oskar/generate_basefunction_plots.sh
+++ b/demo/comparison-oskar/generate_basefunction_plots.sh
@@ -1,5 +1,6 @@
 #!/bin/sh
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 export PATH=$EXTRA_PATH:$PATH
 python3 -B `dirname "${0}"`/generate_basefunction_plots.py
-
diff --git a/demo/comparison-oskar/generate_oskar_csv.py b/demo/comparison-oskar/generate_oskar_csv.py
index 91d2d42195a9efc5245a1232cf49fbed2725a94f..8d181f8ca9f8ef3a24edb324e4aa1783fc679a4e 100755
--- a/demo/comparison-oskar/generate_oskar_csv.py
+++ b/demo/comparison-oskar/generate_oskar_csv.py
@@ -1,4 +1,6 @@
 #!/usr/bin/env python3
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 import argparse
 import os
diff --git a/demo/comparison-oskar/make_element_response_image.cpp b/demo/comparison-oskar/make_element_response_image.cpp
index c3d0952d5ecfc48ae98357f3843aebde6688c416..519901b3a40ee17aba5d8dde0dbc82ff0e460e7c 100644
--- a/demo/comparison-oskar/make_element_response_image.cpp
+++ b/demo/comparison-oskar/make_element_response_image.cpp
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <cmath>
 #include <iostream>
 #include <cstdlib>
@@ -26,7 +29,7 @@ int main(int argc, char** argv){
             double y = (2.0*j)/(N-1) - 1.0;
             double theta = std::asin(sqrt(x*x + y*y));
             double phi = std::atan2(y,x);
-            typedef std::complex<double> Mat[2][2]; 
+            typedef std::complex<double> Mat[2][2];
             element_response.Response(0, freq, theta, phi, *reinterpret_cast<Mat*>(&result[4 * (i*N + j)]));
         }
     }
diff --git a/demo/comparison-oskar/make_plots.py b/demo/comparison-oskar/make_plots.py
index 5525eb051c3f19cf37d39debcfd93a465be74622..286805c24fb0cc11f5bed47238911501ce6ffd97 100644
--- a/demo/comparison-oskar/make_plots.py
+++ b/demo/comparison-oskar/make_plots.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 import numpy as np
 from matplotlib import pyplot as plt
 from read_oskar_beams import read_oskar_beams
diff --git a/demo/comparison-oskar/make_station_response_image.cpp b/demo/comparison-oskar/make_station_response_image.cpp
index 106e326a2ead4c2a836bcf9b25ba1ae37e2bc0c0..4dcbb8f3cfc5e1596a9ac2863880088fb260803c 100644
--- a/demo/comparison-oskar/make_station_response_image.cpp
+++ b/demo/comparison-oskar/make_station_response_image.cpp
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <cmath>
 #include <iostream>
 #include <cstdlib>
diff --git a/demo/comparison-oskar/read_oskar_beams.py b/demo/comparison-oskar/read_oskar_beams.py
index 424c3d4ea2dd54e33331918b157b9f0000493622..bb27641547c43487f089081f90ab1f7e3e5282bb 100644
--- a/demo/comparison-oskar/read_oskar_beams.py
+++ b/demo/comparison-oskar/read_oskar_beams.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 from matplotlib import pyplot as plt
 from astropy.io import fits
 import numpy as np
@@ -5,7 +8,7 @@ import numpy as np
 
 def read_oskar_beams():
     """
-    Read oskar beam and store into 
+    Read oskar beam and store into
 
     Returns
     -------
diff --git a/demo/comparison-oskar/run_oskar.py b/demo/comparison-oskar/run_oskar.py
index 9973e307fa0e32f9129fde664984fbbdc0bae59e..b5e21a583d3a3446ece4b023a2126d516fe73e4d 100644
--- a/demo/comparison-oskar/run_oskar.py
+++ b/demo/comparison-oskar/run_oskar.py
@@ -1,4 +1,6 @@
 #!/usr/bin/env python3
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 """
 Generates all-sky zenith-centred beam patterns for SKALA-4 and EDA-2 antennas.
 """
diff --git a/demo/comparison-oskar/run_oskar_simulation.py b/demo/comparison-oskar/run_oskar_simulation.py
index 113b79ac9c2aa4de23e0861d67d69ddcd78ac3c1..f68fca527104b6b6c22d8f4c248df4f4acf92dda 100755
--- a/demo/comparison-oskar/run_oskar_simulation.py
+++ b/demo/comparison-oskar/run_oskar_simulation.py
@@ -1,4 +1,6 @@
 #!/usr/bin/env python3
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 """
 Generates all-sky zenith-centred beam patterns for SKALA-4 and EDA-2 antennas.
 """
diff --git a/demo/comparison-oskar/utils.py b/demo/comparison-oskar/utils.py
index a621b988bb14c18a70963afde93bae646d116265..71f713bf988a7fd420d3ee47a26631a9be7a0325 100644
--- a/demo/comparison-oskar/utils.py
+++ b/demo/comparison-oskar/utils.py
@@ -1,4 +1,6 @@
 #!/usr/bin/env python3
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 """
 Common functions used in the demo project.
 """
diff --git a/demo/lobes/lobes_image.py b/demo/lobes/lobes_image.py
index 2241717e9eb4e37f5f15ab8861562e17d7036eee..71f461f9a9587f617644963be097a793b0731582 100644
--- a/demo/lobes/lobes_image.py
+++ b/demo/lobes/lobes_image.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 from everybeam import load_telescope, LOFAR, Options, thetaphi2cart
 import matplotlib.pyplot as plt
 import numpy as np
diff --git a/demo/misc/makeresponseimage.cc b/demo/misc/makeresponseimage.cc
index 63ab8e7c16243de86ef818e29f8e15e575f5b517..a77a3d72014d8872d9702f4029dc06e600e33938 100644
--- a/demo/misc/makeresponseimage.cc
+++ b/demo/misc/makeresponseimage.cc
@@ -1,25 +1,8 @@
 // makeresponseimage.cc: Generate images of the station response for a given
 // MeasurementSet.
 //
-// Copyright (C) 2013
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id$
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
 
 #include <lofar_config.h>
 
diff --git a/demo/tElementBeamCommon.h b/demo/tElementBeamCommon.h
index d8219d6451a433096cbefd2c3ea8f99ece005b0b..e91bebe78aaa3a5efb4f75aa4ab9e129a54c67d2 100644
--- a/demo/tElementBeamCommon.h
+++ b/demo/tElementBeamCommon.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <iostream>
 #include <complex>
 #include <vector>
diff --git a/demo/tElementBeamHamaker.cc b/demo/tElementBeamHamaker.cc
index 77b3117f074bbcba472741c5898bff53101887ec..d0f3123c0d3725f9479b12e19719723d50824571 100644
--- a/demo/tElementBeamHamaker.cc
+++ b/demo/tElementBeamHamaker.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "config.h"
 
 #include "tElementBeamCommon.h"
diff --git a/demo/tElementBeamOSKARDipole.cc b/demo/tElementBeamOSKARDipole.cc
index 32396a9b5f77ed4bddbe6e425561e7c1e0107c35..d4ddf682d2656786e7064a40f7ed7979fb0c68e9 100644
--- a/demo/tElementBeamOSKARDipole.cc
+++ b/demo/tElementBeamOSKARDipole.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "config.h"
 
 #include "tElementBeamCommon.h"
diff --git a/demo/tElementBeamOSKARSphericalWave.cc b/demo/tElementBeamOSKARSphericalWave.cc
index f8175c839f90665c7fe21d155e76b660f933ff25..8477174903d9859790beefdda4aa9ee3d68e3bec 100644
--- a/demo/tElementBeamOSKARSphericalWave.cc
+++ b/demo/tElementBeamOSKARSphericalWave.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "config.h"
 
 #include "tElementBeamCommon.h"
diff --git a/demo/tStation.cc b/demo/tStation.cc
index 2e66d71c6251e138661e2049c8d56c4aa0bac673..824e3c3717216ea046acac50eb22517c52932a38 100644
--- a/demo/tStation.cc
+++ b/demo/tStation.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <iostream>
 
 #include "./../cpp/station.h"
diff --git a/demo/tStationBeamCommon.h b/demo/tStationBeamCommon.h
index 696cf227ef1584420e971a2b4128a11e1e92a8f9..db24c88cd904dcb7df5ea6b84978692ac8652fdc 100644
--- a/demo/tStationBeamCommon.h
+++ b/demo/tStationBeamCommon.h
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <iostream>
 #include <complex>
 #include <vector>
diff --git a/demo/tStationBeamHamaker.cc b/demo/tStationBeamHamaker.cc
index c08a701a1c13c2f45fa51381abd1e0399fcbf9bb..b61e33d5be327cce0dae3317bfb4b6c4d78d007f 100644
--- a/demo/tStationBeamHamaker.cc
+++ b/demo/tStationBeamHamaker.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "config.h"
 
 #include "tStationBeamCommon.h"
diff --git a/demo/tStationBeamOSKARDipole.cc b/demo/tStationBeamOSKARDipole.cc
index a20dcdd653d1fe7868dadd7d814591c3d106d3a5..3ea7f8425b58c0a9fb02f258dc93afc91d13d3eb 100644
--- a/demo/tStationBeamOSKARDipole.cc
+++ b/demo/tStationBeamOSKARDipole.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "config.h"
 
 #include "tStationBeamCommon.h"
diff --git a/demo/tStationBeamOSKARSphericalWave.cc b/demo/tStationBeamOSKARSphericalWave.cc
index 06fd02c3e7a6d36bbe520e604f5e8e8d313946c6..65aeb7770d8b4fdd5159be233d08887b58ebd5e3 100644
--- a/demo/tStationBeamOSKARSphericalWave.cc
+++ b/demo/tStationBeamOSKARSphericalWave.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include "config.h"
 
 #include "tStationBeamCommon.h"
diff --git a/demo/wsclean-oskar/CMakeLists.txt b/demo/wsclean-oskar/CMakeLists.txt
index 4654c53f0a1b938bb7b51eeb22462d95e96ff84f..17342415f87682ab53b1c2b58f9242195b5181ce 100644
--- a/demo/wsclean-oskar/CMakeLists.txt
+++ b/demo/wsclean-oskar/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 set(MS "testdata.ms")
 
 # Generate the test MeasurementSet
diff --git a/demo/wsclean-oskar/make_model_images.py b/demo/wsclean-oskar/make_model_images.py
index a793be6d8b1d19419ab36f68958ae936ced788c0..90d45f9dfcb1ba2428dffb46baa216c97a844c48 100644
--- a/demo/wsclean-oskar/make_model_images.py
+++ b/demo/wsclean-oskar/make_model_images.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 from astropy.io import fits
 
 with fits.open("template-image.fits") as img:
@@ -24,4 +27,3 @@ with fits.open("template-image.fits") as img:
     img[0].data[:] = 0.0
     img[0].data[0,0,N-offset,N-offset] = 1.0
     img.writeto('wsclean-V-model.fits', overwrite = True)
-
diff --git a/demo/wsclean-oskar/make_model_images.sh b/demo/wsclean-oskar/make_model_images.sh
index b4a3a322564322c8793a827f9e38c848c35ed8de..bd90aa935fb4fe549a21c809ecddffa3ffe74ae2 100755
--- a/demo/wsclean-oskar/make_model_images.sh
+++ b/demo/wsclean-oskar/make_model_images.sh
@@ -1,5 +1,6 @@
 #!/bin/sh
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 export PATH=$EXTRA_PATH:$PATH
 python3 -B `dirname "${0}"`/make_model_images.py
-
diff --git a/demo/wsclean-oskar/run_oskar_simulation.py b/demo/wsclean-oskar/run_oskar_simulation.py
index ae5aaf1930bd8f92f4c656189070d510993580c2..34c4c63d7f1b8cd559f2b49f7c4e87241fe82a13 100755
--- a/demo/wsclean-oskar/run_oskar_simulation.py
+++ b/demo/wsclean-oskar/run_oskar_simulation.py
@@ -1,4 +1,6 @@
 #!/usr/bin/env python3
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 """
 Generates all-sky zenith-centred beam patterns for SKALA-4 and EDA-2 antennas.
 """
diff --git a/demo/wsclean-oskar/run_oskar_simulation.sh b/demo/wsclean-oskar/run_oskar_simulation.sh
index d10478ea7222a74e3ddc7e0baaa262bea6034d5d..3ac379a47497a6776ad2aa157bc9ed7b022e561f 100755
--- a/demo/wsclean-oskar/run_oskar_simulation.sh
+++ b/demo/wsclean-oskar/run_oskar_simulation.sh
@@ -1,4 +1,6 @@
 #!/bin/sh
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 export PATH=$EXTRA_PATH:$PATH
 python3 -B `dirname "${0}"`/run_oskar_simulation.py
diff --git a/demo/wsclean-oskar/run_wsclean_oskar.sh b/demo/wsclean-oskar/run_wsclean_oskar.sh
index 61161304369cfabfa644c907085101d00260c980..68b2b8bf17fafd5546ab48f088288c71e37f3f1b 100755
--- a/demo/wsclean-oskar/run_wsclean_oskar.sh
+++ b/demo/wsclean-oskar/run_wsclean_oskar.sh
@@ -1,4 +1,7 @@
 #!/bin/sh
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 set -e
 
 SRC_DIR="$( cd "$( dirname "${0}" )" >/dev/null 2>&1 && pwd )"
@@ -26,5 +29,3 @@ wsclean ${intervaloptions} -name oskar-1-1 -no-dirty -scale 2amin -size 300 300
 wsclean ${intervaloptions} -predict -pol IQUV ${atermoptions} -use-idg ${MS}
 wsclean ${intervaloptions} -name oskar-1-1 -data-column MODEL_DATA -pol IQUV -no-dirty -scale 2amin -size 300 300 ${atermoptions} -use-idg ${MS}
 wsclean ${intervaloptions} -name oskar-1-0 -data-column MODEL_DATA -pol IQUV -no-dirty -scale 2amin -size 300 300 -use-idg ${MS}
-
-
diff --git a/docker/Dockerfile-base b/docker/Dockerfile-base
index 7ee5f98bbf6fc447fae6a0e86b50342e1d385fbb..8585526c1f97870cfbecb82dbfb15c25aaaa55a4 100644
--- a/docker/Dockerfile-base
+++ b/docker/Dockerfile-base
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # base
 FROM ubuntu:18.04
 RUN apt-get update && apt-get upgrade -y && \
@@ -10,4 +13,4 @@ RUN apt-get update && \
 # install dependencies
         libboost-all-dev libhdf5-dev libfftw3-dev \
         libblas-dev liblapack-dev libgsl-dev libxml2-dev \
-        libpng-dev libgtkmm-3.0-dev libpython3-dev 
+        libpng-dev libgtkmm-3.0-dev libpython3-dev
diff --git a/docker/Dockerfile-dp3 b/docker/Dockerfile-dp3
index 44e50acce7fdc2e15f19ee34464bf404b074c466..04d76d90cbdd96d7ca8dfa1c22bc84d40809e931 100644
--- a/docker/Dockerfile-dp3
+++ b/docker/Dockerfile-dp3
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 #
 # base
 #
diff --git a/docker/Dockerfile-everybeam b/docker/Dockerfile-everybeam
index 86a62861a17ce7aec70d3e4a04023125c3a4db69..d763a60b7669bb4c5ddbec3b28adb8155285b867 100644
--- a/docker/Dockerfile-everybeam
+++ b/docker/Dockerfile-everybeam
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 ARG BASE_TAG=latest
 FROM everybeam_base:$BASE_TAG
 
diff --git a/docker/Dockerfile-wsclean b/docker/Dockerfile-wsclean
index c3e2a5fbfac00d9f0c686ae4671be76ba571bc05..125873286f36087c68555434f4d0cad03795568b 100644
--- a/docker/Dockerfile-wsclean
+++ b/docker/Dockerfile-wsclean
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 #
 # base
 #
diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
index 2a1e503eb22c6520206fc45a0c11af522138ff7f..b1cd9d43536be89b07343104c593198d342cef8b 100644
--- a/python/CMakeLists.txt
+++ b/python/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 project(everybeam_pybind11)
 
 find_package(PythonLibs 3 REQUIRED)
diff --git a/python/lobes/CMakeLists.txt b/python/lobes/CMakeLists.txt
index 244e512d994f44c42d2455a75e8aaf129c4dec1e..6e87e1b3b3c73b9e5af5f4f3544041ef4f66efce 100644
--- a/python/lobes/CMakeLists.txt
+++ b/python/lobes/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 project(lobes_pybind11)
 
 # Create the binding library
diff --git a/python/lobes/lobes.cc b/python/lobes/lobes.cc
index ae50ca0b741bd66b1b867ec0eab94c4d2ef1d40e..e6fa3a98fb50b8cc6c200206f123fe87c54f6e37 100644
--- a/python/lobes/lobes.cc
+++ b/python/lobes/lobes.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <cmath>
 
 #include <Eigen/Core>
diff --git a/python/pyeverybeam.cc.tmp b/python/pyeverybeam.cc.tmp
deleted file mode 100644
index 90bf070c41c283832a8312916573c21a79b85f0d..0000000000000000000000000000000000000000
--- a/python/pyeverybeam.cc.tmp
+++ /dev/null
@@ -1,720 +0,0 @@
-// pyeverybeam.cc: python module for EveryBeam object.
-// Copyright (C) 2007
-// ASTRON (Netherlands Institute for Radio Astronomy)
-// P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
-//
-// This file is part of the LOFAR software suite.
-// The LOFAR software suite is free software: you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as published
-// by the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The LOFAR software suite is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with the LOFAR software suite. If not, see <http://www.gnu.org/licenses/>.
-//
-// $Id: pystationresponse.cc 33141 2015-12-16 15:10:19Z dijkema $
-
-#include "itrfdirection.h"
-#include "lofarreadutils.h"
-#include "station.h"
-
-#include <casacore/casa/Arrays/Array.h>
-#include <casacore/casa/Arrays/Matrix.h>
-#include <casacore/casa/Arrays/Cube.h>
-#include <casacore/casa/Containers/ValueHolder.h>
-#include <casacore/ms/MeasurementSets/MeasurementSet.h>
-#include <casacore/ms/MeasurementSets/MSColumns.h>
-#include <casacore/measures/Measures/MeasTable.h>
-#include <casacore/measures/Measures/MPosition.h>
-#include <casacore/measures/Measures/MDirection.h>
-#include <casacore/measures/Measures/MeasConvert.h>
-#include <casacore/measures/Measures/MCPosition.h>
-#include <casacore/measures/Measures/MCDirection.h>
-
-#include <casacore/python/Converters/PycExcp.h>
-#include <casacore/python/Converters/PycBasicData.h>
-#include <casacore/python/Converters/PycValueHolder.h>
-
-#include <boost/python.hpp>
-#include <boost/python/args.hpp>
-
-using namespace casacore;
-using namespace boost::python;
-using namespace everybeam;
-
-namespace everybeam {
-namespace {
-
-//! Convert an ITRF position given as a everybeam::vector3r_t instance to a
-//! casacore::MPosition.
-MPosition toMPositionITRF(const vector3r_t &position);
-
-//! Convert a casacore::MPosition instance to a everybeam::vector3r_t instance.
-vector3r_t fromMPosition(const MPosition &position);
-
-//! Convert a casacore::MDirection instance to a StationResponse::vector3r_t
-//! instance.
-vector3r_t fromMDirection(const MDirection &direction);
-
-/*!
- *  \brief Check if the specified column exists as a column of the specified
- *  table.
- *
- *  \param table The Table instance to check.
- *  \param column The name of the column.
- */
-bool hasColumn(const Table &table, const string &column);
-
-/*!
- *  \brief Check if the specified sub-table exists as a sub-table of the
- *  specified table.
- *
- *  \param table The Table instance to check.
- *  \param name The name of the sub-table.
- */
-bool hasSubTable(const Table &table, const string &name);
-
-/*!
- *  \brief Provide access to a sub-table by name.
- *
- *  \param table The Table instance to which the sub-table is associated.
- *  \param name The name of the sub-table.
- */
-Table getSubTable(const Table &table, const string &name);
-
-/*!
- *  \brief Attempt to read the position of the observatory. If the
- *  observatory position is unknown, the specified default position is
- *  returned.
- *
- *  \param ms MeasurementSet to read the observatory position from.
- *  \param idObservation Identifier that determines of which observation the
- *  observatory position should be read.
- *  \param defaultPosition The position that will be returned if the
- *  observatory position is unknown.
- */
-MPosition readObservatoryPosition(const MeasurementSet &ms,
-                                  unsigned int idObservation,
-                                  const MPosition &defaultPosition);
-
-/*!
- *  \brief Read the phase reference direction.
- *
- *  \param ms MeasurementSet to read the phase reference direction from.
- *  \param idField Identifier of the field of which the phase reference
- *  direction should be read.
- */
-MDirection readPhaseReference(const MeasurementSet &ms, unsigned int idField);
-
-/*!
- *  \brief Read the station beam former reference direction.
- *
- *  \param ms MeasurementSet to read the station beam former reference
- *  direction from.
- *  \param idField Identifier of the field of which the station beam former
- *  reference direction should be read.
- */
-MDirection readDelayReference(const MeasurementSet &ms, unsigned int idField);
-
-/*!
- *  \brief Read the station beam former reference direction.
- *
- *  \param ms MeasurementSet to read the tile beam former reference direction
- *  from.
- *  \param idField Identifier of the field of which the tile beam former
- *  reference direction should be read.
- */
-MDirection readTileReference(const MeasurementSet &ms, unsigned int idField);
-}  // namespace
-
-class PyEveryBeam {
- public:
-  /**
-   * @brief Construct a new Py Every Beam object
-   *
-   * @param msName
-   * @param inverse
-   * @param useElementResponse
-   * @param useArrayFactor
-   * @param useChanFreq
-   */
-  PyEveryBeam(const string &msName, bool inverse = false,
-              bool useElementResponse = true, bool useArrayFactor = true,
-              bool useChanFreq = false);
-
-  //! Get the software version.
-  string version(const string &type) const;
-
-  /**
-   * @brief Set the delay reference direction in radians, J2000. The delay
-   * reference direction is the direction used by the station beamformer.
-   *
-   * @param ra Right ascension (H)
-   * @param dec Declination (rad)
-   */
-  void setRefDelay(double ra, double dec);
-
-  /**
-   * @brief Get the delay reference direction in meters, ITRF. The delay
-   * reference direction is the direction used by the station beamformer.
-   *
-   */
-  ValueHolder getRefDelay(real_t time);
-
-  /**
-   * @brief Set the tile reference direction in radians, J2000. The tile
-   * reference direction is the direction used by the analog tile beamformer and
-   * is relevant only for HBA observations.
-   *
-   * @param ra Right ascension (H)
-   * @param dec Declination (rad)
-   */
-  void setRefTile(double ra, double dec);
-
-  /**
-   * @brief Get the tile reference direction in meters, ITRF. The delay
-   * reference direction is the direction used by the analog tile beamformer and
-   * is relevant only for HBA observations.
-   *
-   */
-  ValueHolder getRefTile(real_t time);
-
-  /**
-   * @brief Set the direction of interest in radians, J2000. Can and often will
-   * be different than the delay and/or tile reference direction.
-   *
-   * @param ra Right ascension (H)
-   * @param dec Declination (rad)
-   */
-  void setDirection(double ra, double dec);
-
-  //! Get the direction of intereset in meters, ITRF.
-  ValueHolder getDirection(real_t time);
-
-  // TODO: needs tightening and give methods more meaningful name!
-  //! Compute the beam Jones matrices for the given time
-  ValueHolder evaluate0(double time);
-  //! Compute the beam Jones matrices for the given time and station
-  ValueHolder evaluate1(double time, int station);
-  //! Compute the beam Jones matrices for the given time, station and channel
-  ValueHolder evaluate2(double time, int station, int channel);
-  //! Compute the beam Jones matrices for the given time, station and frequency
-  ValueHolder evaluate3(double time, int station, double freq);
-  //! Compute the beam Jones matrices for the given time, station, frequency and
-  //! direction
-  ValueHolder evaluate4(double time, int station, double freq,
-                        const ValueHolder &direction,
-                        const ValueHolder &station0, const ValueHolder &tile0);
-
- private:
-  Matrix<DComplex> evaluate_itrf(const Station::ConstPtr &station, double time,
-                                 double freq, double freq0,
-                                 const vector3r_t &direction,
-                                 const vector3r_t &station0,
-                                 const vector3r_t &tile0) const;
-
-  Matrix<DComplex> evaluate(const Station::ConstPtr &station, double time,
-                            double freq, double freq0) const;
-
-  Cube<DComplex> evaluate(const Station::ConstPtr &station, double time,
-                          const Vector<Double> &freq,
-                          const Vector<Double> &freq0) const;
-
-  // Utilities for inverting (diagonal) matrix
-  void invert(matrix22c_t &in) const;
-  void invert(diag22c_t &in) const;
-
-  // Data members.
-  bool itsInverse;
-  bool itsUseElementResponse;
-  bool itsUseArrayFactor;
-  bool itsUseChanFreq;
-  Vector<Station::Ptr> itsStations;
-  Vector<Double> itsChanFreq;
-  Vector<Double> itsRefFreq;
-
-  vector3r_t itsRefPosition;
-  ITRFDirection::Ptr itsRefDelay;
-  ITRFDirection::Ptr itsRefTile;
-
-  ITRFDirection::Ptr itsDirection;
-};
-
-PyEveryBeam::PyEveryBeam(const string &name, bool inverse,
-                         bool useElementResponse, bool useArrayFactor,
-                         bool useChanFreq)
-    : itsInverse(inverse),
-      itsUseElementResponse(useElementResponse),
-      itsUseArrayFactor(useArrayFactor),
-      itsUseChanFreq(useChanFreq) {
-  MeasurementSet ms(name);
-
-  // Read spectral window id.
-  const unsigned int idDataDescription = 0;
-  ROMSDataDescColumns desc(ms.dataDescription());
-  assert(desc.nrow() > idDataDescription);
-  assert(!desc.flagRow()(idDataDescription));
-
-  // Read the spectral information.
-  const unsigned int idWindow = desc.spectralWindowId()(idDataDescription);
-  ROMSSpWindowColumns window(ms.spectralWindow());
-  assert(window.nrow() > idWindow);
-  assert(!window.flagRow()(idWindow));
-
-  itsChanFreq = window.chanFreq()(idWindow);
-  itsRefFreq =
-      Vector<Double>(itsChanFreq.size(), window.refFrequency()(idWindow));
-
-  // Read the station information.
-  ROMSAntennaColumns antenna(ms.antenna());
-  itsStations.resize(antenna.nrow());
-  for (unsigned int i = 0; i < antenna.nrow(); ++i) {
-    itsStations(i) = readStation(ms, i);
-  }
-
-  // Read observatory position. If unknown, default to the position of the
-  // first station.
-  unsigned int idObservation = 0;
-  MPosition refPosition = readObservatoryPosition(
-      ms, idObservation, toMPositionITRF(itsStations(0)->position()));
-  itsRefPosition =
-      fromMPosition(MPosition::Convert(refPosition, MPosition::ITRF)());
-
-  // Read the reference directions.
-  unsigned int idField = 0;
-  itsRefDelay.reset(new ITRFDirection(
-      itsRefPosition,
-      fromMDirection(MDirection::Convert(readDelayReference(ms, idField),
-                                         MDirection::J2000)())));
-
-  itsRefTile.reset(new ITRFDirection(
-      itsRefPosition,
-      fromMDirection(MDirection::Convert(readTileReference(ms, idField),
-                                         MDirection::J2000)())));
-
-  itsDirection.reset(new ITRFDirection(
-      itsRefPosition,
-      fromMDirection(MDirection::Convert(readPhaseReference(ms, idField),
-                                         MDirection::J2000)())));
-}
-
-string PyEveryBeam::version(const string &type) const { return "0.1"; }
-
-void PyEveryBeam::setRefDelay(double ra, double dec) {
-  vector2r_t direction = {{ra, dec}};
-  itsRefDelay.reset(new ITRFDirection(itsRefPosition, direction));
-}
-
-ValueHolder PyEveryBeam::getRefDelay(real_t time) {
-  vector3r_t refDelay = itsRefDelay->at(time);
-  Vector<Double> result(3);
-  result(0) = refDelay[0];
-  result(1) = refDelay[1];
-  result(2) = refDelay[2];
-
-  return ValueHolder(result);
-}
-
-void PyEveryBeam::setRefTile(double ra, double dec) {
-  vector2r_t direction = {{ra, dec}};
-  itsRefTile.reset(new ITRFDirection(itsRefPosition, direction));
-}
-
-ValueHolder PyEveryBeam::getRefTile(real_t time) {
-  vector3r_t refTile = itsRefTile->at(time);
-  Vector<Double> result(3);
-  result(0) = refTile[0];
-  result(1) = refTile[1];
-  result(2) = refTile[2];
-
-  return ValueHolder(result);
-}
-
-void PyEveryBeam::setDirection(double ra, double dec) {
-  vector2r_t direction = {{ra, dec}};
-  itsDirection.reset(new ITRFDirection(itsRefPosition, direction));
-}
-
-ValueHolder PyEveryBeam::getDirection(real_t time) {
-  vector3r_t direction = itsDirection->at(time);
-  Vector<Double> result(3);
-  result(0) = direction[0];
-  result(1) = direction[1];
-  result(2) = direction[2];
-
-  return ValueHolder(result);
-}
-
-ValueHolder PyEveryBeam::evaluate0(double time) {
-  Array<DComplex> result(
-      IPosition(4, 2, 2, itsChanFreq.size(), itsStations.size()));
-
-  for (unsigned int i = 0; i < itsStations.size(); ++i) {
-    IPosition start(4, 0, 0, 0, i);
-    IPosition end(4, 1, 1, itsChanFreq.size() - 1, i);
-    Cube<DComplex> slice = result(start, end).nonDegenerate();
-    if (itsUseChanFreq) {
-      slice = evaluate(itsStations(i), time, itsChanFreq, itsChanFreq);
-    } else {
-      slice = evaluate(itsStations(i), time, itsChanFreq, itsRefFreq);
-    }
-  }
-
-  return ValueHolder(result);
-}
-
-ValueHolder PyEveryBeam::evaluate1(double time, int station) {
-  //     assertSTR(station >= 0 && static_cast<size_t>(station)
-  //       < itsStations.size(), "invalid station number: " << station);
-
-  if (itsUseChanFreq) {
-    return ValueHolder(
-        evaluate(itsStations(station), time, itsChanFreq, itsChanFreq));
-  }
-
-  return ValueHolder(
-      evaluate(itsStations(station), time, itsChanFreq, itsRefFreq));
-}
-
-ValueHolder PyEveryBeam::evaluate2(double time, int station, int channel) {
-  //     assertSTR(station >= 0 && static_cast<size_t>(station)
-  //       < itsStations.size(), "invalid station number: " << station);
-  //     assertSTR(channel >= 0 && static_cast<size_t>(channel)
-  //       < itsChanFreq.size(), "invalid channel number: " << channel);
-
-  double freq = itsChanFreq(channel);
-  if (itsUseChanFreq) {
-    return ValueHolder(evaluate(itsStations(station), time, freq, freq));
-  }
-
-  double freq0 = itsRefFreq(channel);
-  return ValueHolder(evaluate(itsStations(station), time, freq, freq0));
-}
-
-ValueHolder PyEveryBeam::evaluate3(double time, int station, double freq) {
-  //     assertSTR(station >= 0 && static_cast<size_t>(station)
-  //       < itsStations.size(), "invalid station number: " << station);
-
-  if (itsUseChanFreq) {
-    return ValueHolder(evaluate(itsStations(station), time, freq, freq));
-  }
-
-  double freq0 = itsRefFreq(0);
-  return ValueHolder(evaluate(itsStations(station), time, freq, freq0));
-}
-
-ValueHolder PyEveryBeam::evaluate4(double time, int station, double freq,
-                                   const ValueHolder &vh_direction,
-                                   const ValueHolder &vh_station0,
-                                   const ValueHolder &vh_tile0) {
-  assert(vh_direction.dataType() == TpArrayDouble);
-  assert(vh_station0.dataType() == TpArrayDouble);
-  assert(vh_tile0.dataType() == TpArrayDouble);
-  Array<Double> arr_dir(vh_direction.asArrayDouble());
-  Array<Double> st0_dir(vh_station0.asArrayDouble());
-  Array<Double> tile_dir(vh_tile0.asArrayDouble());
-  vector3r_t direction = {
-      {arr_dir.data()[0], arr_dir.data()[1], arr_dir.data()[2]}};
-  vector3r_t station0 = {
-      {st0_dir.data()[0], st0_dir.data()[1], st0_dir.data()[2]}};
-  vector3r_t tile0 = {
-      {tile_dir.data()[0], tile_dir.data()[1], tile_dir.data()[2]}};
-
-  if (itsUseChanFreq) {
-    return ValueHolder(evaluate_itrf(itsStations(station), time, freq, freq,
-                                     direction, station0, tile0));
-  }
-
-  double freq0 = itsRefFreq(0);
-  return ValueHolder(evaluate_itrf(itsStations(station), time, freq, freq0,
-                                   direction, station0, tile0));
-}
-
-Cube<DComplex> PyEveryBeam::evaluate(const Station::ConstPtr &station,
-                                     double time, const Vector<Double> &freq,
-                                     const Vector<Double> &freq0) const {
-  Cube<DComplex> result(2, 2, freq.size(), 0.0);
-  if (itsUseArrayFactor) {
-    vector3r_t direction = itsDirection->at(time);
-    vector3r_t station0 = itsRefDelay->at(time);
-    vector3r_t tile0 = itsRefTile->at(time);
-
-    if (itsUseElementResponse) {
-      for (unsigned int i = 0; i < freq.size(); ++i) {
-        matrix22c_t response = station->response(time, freq(i), direction,
-                                                 freq0(i), station0, tile0);
-
-        if (itsInverse) {
-          invert(response);
-        }
-
-        result(0, 0, i) = response[0][0];
-        result(1, 0, i) = response[0][1];
-        result(0, 1, i) = response[1][0];
-        result(1, 1, i) = response[1][1];
-      }
-    } else {
-      for (unsigned int i = 0; i < freq.size(); ++i) {
-        diag22c_t af = station->arrayFactor(time, freq(i), direction, freq0(i),
-                                            station0, tile0);
-
-        if (itsInverse) {
-          invert(af);
-        }
-
-        result(0, 0, i) = af[0];
-        result(1, 1, i) = af[1];
-      }
-    }
-  } else if (itsUseElementResponse) {
-    // For a station with multiple antenna fields, need to select for which
-    // field the element response will be evaluated. Here the first field of the
-    // station is always selected.
-    AntennaField::ConstPtr field = *station->beginFields();
-
-    vector3r_t direction = itsDirection->at(time);
-    for (unsigned int i = 0; i < freq.size(); ++i) {
-      matrix22c_t response = field->elementResponse(time, freq(i), direction);
-
-      if (itsInverse) {
-        invert(response);
-      }
-
-      result(0, 0, i) = response[0][0];
-      result(1, 0, i) = response[0][1];
-      result(0, 1, i) = response[1][0];
-      result(1, 1, i) = response[1][1];
-    }
-  } else {
-    for (unsigned int i = 0; i < freq.size(); ++i) {
-      result(0, 0, i) = 1.0;
-      result(1, 1, i) = 1.0;
-    }
-  }
-
-  return result;
-}
-
-Matrix<DComplex> PyEveryBeam::evaluate_itrf(const Station::ConstPtr &station,
-                                            double time, double freq,
-                                            double freq0,
-                                            const vector3r_t &direction,
-                                            const vector3r_t &station0,
-                                            const vector3r_t &tile0) const {
-  Matrix<DComplex> result(2, 2, 0.0);
-  if (itsUseArrayFactor) {
-    if (itsUseElementResponse) {
-      matrix22c_t response =
-          station->response(time, freq, direction, freq0, station0, tile0);
-
-      if (itsInverse) {
-        invert(response);
-      }
-
-      result(0, 0) = response[0][0];
-      result(1, 0) = response[0][1];
-      result(0, 1) = response[1][0];
-      result(1, 1) = response[1][1];
-    } else {
-      diag22c_t af =
-          station->arrayFactor(time, freq, direction, freq0, station0, tile0);
-
-      if (itsInverse) {
-        invert(af);
-      }
-
-      result(0, 0) = af[0];
-      result(1, 1) = af[1];
-    }
-  } else if (itsUseElementResponse) {
-    // For a station with multiple antenna fields, need to select for which
-    // field the element response will be evaluated. Here the first field of
-    // the station is always selected.
-    AntennaField::ConstPtr field = *station->beginFields();
-
-    matrix22c_t response = field->elementResponse(time, freq, direction);
-
-    if (itsInverse) {
-      invert(response);
-    }
-
-    result(0, 0) = response[0][0];
-    result(1, 0) = response[0][1];
-    result(0, 1) = response[1][0];
-    result(1, 1) = response[1][1];
-  } else {
-    result(0, 0) = 1.0;
-    result(1, 1) = 1.0;
-  }
-
-  return result;
-}
-
-Matrix<DComplex> PyEveryBeam::evaluate(const Station::ConstPtr &station,
-                                       double time, double freq,
-                                       double freq0) const {
-  vector3r_t direction;
-  vector3r_t station0;
-  vector3r_t tile0;
-  if (itsUseArrayFactor) {
-    direction = itsDirection->at(time);
-    station0 = itsRefDelay->at(time);
-    tile0 = itsRefTile->at(time);
-  } else if (itsUseElementResponse) {
-    direction = itsDirection->at(time);
-  }
-  return evaluate_itrf(station, time, freq, freq0, direction, station0, tile0);
-}
-
-void PyEveryBeam::invert(matrix22c_t &in) const {
-  complex_t invDet = 1.0 / (in[0][0] * in[1][1] - in[0][1] * in[1][0]);
-
-  complex_t tmp = in[1][1];
-  in[1][1] = in[0][0];
-  in[0][0] = tmp;
-
-  in[0][0] *= invDet;
-  in[0][1] *= -invDet;
-  in[1][0] *= -invDet;
-  in[1][1] *= invDet;
-}
-
-void PyEveryBeam::invert(diag22c_t &in) const {
-  DComplex invDet = 1.0 / (in[0] * in[1]);
-  DComplex tmp = in[1];
-  in[1] = in[0];
-  in[0] = tmp;
-
-  in[0] *= invDet;
-  in[1] *= invDet;
-}
-
-// Now define the interface in Boost-Python.
-void pyeverybeam() {
-  class_<PyEveryBeam>("EveryBeam", init<std::string, bool, bool, bool, bool>())
-      .def("version", &PyEveryBeam::version,
-           (boost::python::arg("type") = "other"))
-      .def("setRefDelay", &PyEveryBeam::setRefDelay,
-           (boost::python::arg("ra"), boost::python::arg("dec")))
-      .def("getRefDelay", &PyEveryBeam::getRefDelay,
-           (boost::python::arg("time")))
-      .def("setRefTile", &PyEveryBeam::setRefTile,
-           (boost::python::arg("ra"), boost::python::arg("dec")))
-      .def("getRefTile", &PyEveryBeam::getRefTile, (boost::python::arg("time")))
-      .def("setDirection", &PyEveryBeam::setDirection,
-           (boost::python::arg("ra"), boost::python::arg("dec")))
-      .def("getDirection", &PyEveryBeam::getDirection,
-           (boost::python::arg("time")))
-      .def("evaluate0", &PyEveryBeam::evaluate0, (boost::python::arg("time")))
-      .def("evaluate1", &PyEveryBeam::evaluate1,
-           (boost::python::arg("time"), boost::python::arg("station")))
-      .def("evaluate2", &PyEveryBeam::evaluate2,
-           (boost::python::arg("time"), boost::python::arg("station"),
-            boost::python::arg("channel")))
-      .def("evaluate3", &PyEveryBeam::evaluate3,
-           (boost::python::arg("time"), boost::python::arg("station"),
-            boost::python::arg("freq")))
-      .def("evaluate4", &PyEveryBeam::evaluate4,
-           (boost::python::arg("time"), boost::python::arg("station"),
-            boost::python::arg("freq"), boost::python::arg("direction"),
-            boost::python::arg("station0"), boost::python::arg("tile0")));
-}
-
-namespace {
-MPosition toMPositionITRF(const vector3r_t &position) {
-  MVPosition mvITRF(position[0], position[1], position[2]);
-  return MPosition(mvITRF, MPosition::ITRF);
-}
-
-vector3r_t fromMPosition(const MPosition &position) {
-  MVPosition mvPosition = position.getValue();
-  vector3r_t result = {{mvPosition(0), mvPosition(1), mvPosition(2)}};
-  return result;
-}
-
-vector3r_t fromMDirection(const MDirection &direction) {
-  MVDirection mvDirection = direction.getValue();
-  vector3r_t result = {{mvDirection(0), mvDirection(1), mvDirection(2)}};
-  return result;
-}
-
-bool hasColumn(const Table &table, const string &column) {
-  return table.tableDesc().isColumn(column);
-}
-
-bool hasSubTable(const Table &table, const string &name) {
-  return table.keywordSet().isDefined(name);
-}
-
-Table getSubTable(const Table &table, const string &name) {
-  return table.keywordSet().asTable(name);
-}
-
-MPosition readObservatoryPosition(const MeasurementSet &ms,
-                                  unsigned int idObservation,
-                                  const MPosition &defaultPosition) {
-  // Get the instrument position in ITRF coordinates, or use the centroid
-  // of the station positions if the instrument position is unknown.
-  ROMSObservationColumns observation(ms.observation());
-  assert(observation.nrow() > idObservation);
-  assert(!observation.flagRow()(idObservation));
-
-  // Read observatory name and try to look-up its position.
-  const string observatory = observation.telescopeName()(idObservation);
-
-  // Look-up observatory position, default to specified default position.
-  MPosition position(defaultPosition);
-  MeasTable::Observatory(position, observatory);
-  return position;
-}
-
-MDirection readPhaseReference(const MeasurementSet &ms, unsigned int idField) {
-  ROMSFieldColumns field(ms.field());
-  assert(field.nrow() > idField);
-  assert(!field.flagRow()(idField));
-
-  return field.phaseDirMeas(idField);
-}
-
-MDirection readDelayReference(const MeasurementSet &ms, unsigned int idField) {
-  ROMSFieldColumns field(ms.field());
-  assert(field.nrow() > idField);
-  assert(!field.flagRow()(idField));
-
-  return field.delayDirMeas(idField);
-}
-
-MDirection readTileReference(const MeasurementSet &ms, unsigned int idField) {
-  // The MeasurementSet class does not support LOFAR specific columns, so we
-  // use ROArrayMeasColumn to read the tile beam reference direction.
-  Table tab_field = getSubTable(ms, "FIELD");
-
-  static const String columnName = "LOFAR_TILE_BEAM_DIR";
-  if (hasColumn(tab_field, columnName)) {
-    ROArrayMeasColumn<MDirection> c_direction(tab_field, columnName);
-    if (c_direction.isDefined(idField)) {
-      return c_direction(idField)(IPosition(1, 0));
-    }
-  }
-
-  // By default, the tile beam reference direction is assumed to be equal
-  // to the station beam reference direction (for backward compatibility,
-  // and for non-HBA measurements).
-  return readDelayReference(ms, idField);
-}
-}  // namespace
-}  // namespace everybeam
-
-// Define the python module itself.
-BOOST_PYTHON_MODULE(_everybeam) {
-  casacore::python::register_convert_excp();
-  casacore::python::register_convert_basicdata();
-  casacore::python::register_convert_casa_valueholder();
-
-  everybeam::pyeverybeam();
-}
diff --git a/python/test/CMakeLists.txt b/python/test/CMakeLists.txt
index e2f428a15f12550db463bf7d92606f31de4bf8cd..f06b85ec2f5a3b5236fd2697ed38d137b3865dd0 100644
--- a/python/test/CMakeLists.txt
+++ b/python/test/CMakeLists.txt
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # List of tests
 set(UNIT_TESTS
   tPyLoad
diff --git a/python/test/tPyLoad.sh b/python/test/tPyLoad.sh
index 3a9eed90ecbd39168e69324052bd1862651ae2cf..cfbba1e7b6968768cdc0e946e67dc60c1f7444f3 100755
--- a/python/test/tPyLoad.sh
+++ b/python/test/tPyLoad.sh
@@ -1,4 +1,6 @@
 #!/bin/bash
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 
@@ -18,4 +20,4 @@ else
     $SCRIPTS_DIR/download_lofar_lba.sh
 fi
 
-pytest -s --exitfirst ${DIR}/test_load.py 
\ No newline at end of file
+pytest -s --exitfirst ${DIR}/test_load.py
\ No newline at end of file
diff --git a/python/test/test_load.py b/python/test/test_load.py
index 2a0282da34941b87df4aa0a5fdeac9b007b2d842..71b19dbe2745ecf4ec00cd625583c2468e02e482 100644
--- a/python/test/test_load.py
+++ b/python/test/test_load.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 from everybeam import load_telescope, LOFAR, CoordinateSystem
 import pytest
 import os
diff --git a/python/wrappers/pyload.cc b/python/wrappers/pyload.cc
index a38f9514a1f094b755c2c48bdff625f732208530..97ae0bb361d70f56666cd093bbe6a249eb19bb1a 100644
--- a/python/wrappers/pyload.cc
+++ b/python/wrappers/pyload.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <pybind11/pybind11.h>
 #include <memory>
 
diff --git a/python/wrappers/pytelescope.cc b/python/wrappers/pytelescope.cc
index 80a081b425e41dd314ce13655f2cca93fd3e2d8b..6d82eb974208c0079cef0a80945858931a78f06c 100644
--- a/python/wrappers/pytelescope.cc
+++ b/python/wrappers/pytelescope.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <pybind11/pybind11.h>
 #include <pybind11/numpy.h>
 
diff --git a/python/wrappers/pyutils.cc b/python/wrappers/pyutils.cc
index 1315daebecfc2518649aad14eaa4d885a221fee0..90a866a2eafd1824d8de594b2a63bb4e783c1da9 100644
--- a/python/wrappers/pyutils.cc
+++ b/python/wrappers/pyutils.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <pybind11/pybind11.h>
 #include <pybind11/numpy.h>
 #include <pybind11/stl.h>
diff --git a/python/wrappers/wrapper.cc b/python/wrappers/wrapper.cc
index 5bd69f6aca0e4b21a19424d4006438ee66df4840..c14f45f31827e5a1933ff00abdbe150342f5ceb8 100644
--- a/python/wrappers/wrapper.cc
+++ b/python/wrappers/wrapper.cc
@@ -1,3 +1,6 @@
+// Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+// SPDX-License-Identifier: GPL-3.0-or-later
+
 #include <pybind11/pybind11.h>
 
 namespace py = pybind11;
diff --git a/scripts/coeff_scripts/convert_coeff.py b/scripts/coeff_scripts/convert_coeff.py
index 19714879c7725492a78be596972493f32432f0e8..adec67357c0eca4c5716a9e040f5bd562628b40b 100755
--- a/scripts/coeff_scripts/convert_coeff.py
+++ b/scripts/coeff_scripts/convert_coeff.py
@@ -1,4 +1,6 @@
 #!/usr/bin/env python
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 # Script to convert an ASCII beam model coefficient file to a .cc file for
 # inclusion in the library. Whenever the beam model coefficients file are
@@ -61,8 +63,8 @@ def main(args):
 
     Examples:
 
-    ./convert_coeff.py element_beam_LBA.coeff defaultcoefflba.cc default_lba 
-    ./convert_coeff.py element_beam_HBA.coeff defaultcoeffhba.cc default_hba 
+    ./convert_coeff.py element_beam_LBA.coeff defaultcoefflba.cc default_lba
+    ./convert_coeff.py element_beam_HBA.coeff defaultcoeffhba.cc default_hba
     """
     print "converting %s -> %s (variable name: %s)" % (args[0], args[1], args[2])
 
diff --git a/scripts/coeff_scripts/oskar_csv_to_hdf5.py b/scripts/coeff_scripts/oskar_csv_to_hdf5.py
index becae4df60c5d4ab491cc6d7cffadf0ae33bdee4..be4e77f865b8ccb9155c1e43236311cd7821af10 100755
--- a/scripts/coeff_scripts/oskar_csv_to_hdf5.py
+++ b/scripts/coeff_scripts/oskar_csv_to_hdf5.py
@@ -1,4 +1,6 @@
 #!/usr/bin/env python3
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 import argparse
 import os
diff --git a/scripts/coeff_scripts/oskar_matlab_to_hdf5.py b/scripts/coeff_scripts/oskar_matlab_to_hdf5.py
index 274b9b9bd4c4a9fed470ed1d517fa504d3362173..85004c9b3662467cfa3a74d9d375470404251ddc 100755
--- a/scripts/coeff_scripts/oskar_matlab_to_hdf5.py
+++ b/scripts/coeff_scripts/oskar_matlab_to_hdf5.py
@@ -1,4 +1,6 @@
 #!/usr/bin/python3
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 import argparse
 import os
diff --git a/scripts/download_lobes_coeffs.sh b/scripts/download_lobes_coeffs.sh
index 5e92b0466ea2841c1f35079d51cfdb63d8e8bc6e..549b9d1943ca968d3d881c50ada83f120e2eb0e8 100755
--- a/scripts/download_lobes_coeffs.sh
+++ b/scripts/download_lobes_coeffs.sh
@@ -1,5 +1,7 @@
 #!/bin/sh
-#
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # Author: Jakob Maljaars
 # Email: jakob.maljaars_@_stcorp.nl
 
diff --git a/scripts/download_lofar_hba_ms.sh b/scripts/download_lofar_hba_ms.sh
index 8eff34facc7802adab595462fc2ecb114138c7d3..742137dec4eef6d16499086bc9b88c0cc0ff0aa7 100755
--- a/scripts/download_lofar_hba_ms.sh
+++ b/scripts/download_lofar_hba_ms.sh
@@ -1,5 +1,7 @@
 #!/bin/sh
-#
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # Author: Jakob Maljaars
 # Email: jakob.maljaars_@_stcorp.nl
 
diff --git a/scripts/download_lofar_lba_ms.sh b/scripts/download_lofar_lba_ms.sh
index 0e45fe0ec342f6bdf6afe9dd02d0acf122318312..3585121d150ec0e53e2401c6feec1769547970e4 100755
--- a/scripts/download_lofar_lba_ms.sh
+++ b/scripts/download_lofar_lba_ms.sh
@@ -1,5 +1,7 @@
 #!/bin/sh
-#
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # Author: Jakob Maljaars
 # Email: jakob.maljaars_@_stcorp.nl
 
@@ -25,7 +27,7 @@ if [ ! -f ${LOFAR_LBA_MOCK_MS}/table.f0 ] ; then
     fi
 
     mkdir -p $LOFAR_LBA_MOCK_MS
-    
+
     tar -xf $LOFAR_MOCK_ARCHIVE  -C $LOFAR_LBA_MOCK_MS --strip-components=1
     rm $LOFAR_MOCK_ARCHIVE
 fi
diff --git a/scripts/download_mwa_coeff.sh b/scripts/download_mwa_coeff.sh
index caf93ba2ae95ef46603561f421e55ca7b9ae1426..9056495ffa26882123481aebf1a2b27c916a3021 100755
--- a/scripts/download_mwa_coeff.sh
+++ b/scripts/download_mwa_coeff.sh
@@ -1,5 +1,7 @@
 #!/bin/sh
-#
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # Author: Jakob Maljaars
 # Email: jakob.maljaars_@_stcorp.nl
 
diff --git a/scripts/download_mwa_ms.sh b/scripts/download_mwa_ms.sh
index b54348421cd4cb5bd8297caaa26401b1825e5c10..62e9a703ccbf8888680f4ec2d5033842325129ce 100755
--- a/scripts/download_mwa_ms.sh
+++ b/scripts/download_mwa_ms.sh
@@ -1,5 +1,7 @@
 #!/bin/sh
-#
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # Author: Jakob Maljaars
 # Email: jakob.maljaars_@_stcorp.nl
 
diff --git a/scripts/download_oskar_ms.sh b/scripts/download_oskar_ms.sh
index 88db9f29caecff6ed296ec2a12fd6d43af5dd705..27b28f7f6af4ee707aee18728b32e07a527b3771 100755
--- a/scripts/download_oskar_ms.sh
+++ b/scripts/download_oskar_ms.sh
@@ -1,5 +1,7 @@
 #!/bin/sh
-#
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # Author: Jakob Maljaars
 # Email: jakob.maljaars_@_stcorp.nl
 
@@ -24,9 +26,9 @@ if [ ! -f ${OSKAR_MOCK_MS}/table.f0 ] ; then
     if [ ! -f "$OSKAR_MOCK_ARCHIVE" ]; then
 	wget -q https://www.astron.nl/citt/EveryBeam/OSKAR-single-timeslot.tar.bz2 -O $OSKAR_MOCK_ARCHIVE
     fi
-    
+
     mkdir -p $OSKAR_MOCK_MS
-    
+
     tar -xf $OSKAR_MOCK_ARCHIVE  -C $OSKAR_MOCK_MS --strip-components=1
     rm $OSKAR_MOCK_ARCHIVE
 fi
diff --git a/scripts/download_vla_ms.sh b/scripts/download_vla_ms.sh
index 06b2573971763733c45f151b68183239b53c512b..9375e1424ebacf4f07ba973a1a77d80e48724de2 100755
--- a/scripts/download_vla_ms.sh
+++ b/scripts/download_vla_ms.sh
@@ -1,5 +1,7 @@
 #!/bin/sh
-#
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # Author: Jakob Maljaars
 # Email: jakob.maljaars_@_stcorp.nl
 
diff --git a/scripts/misc/F4far_new.py b/scripts/misc/F4far_new.py
index 839b564b6ee3404fe59577979fa741210fffd48c..4799e30330b90bed8b72f999cec12ae44ff577a9 100644
--- a/scripts/misc/F4far_new.py
+++ b/scripts/misc/F4far_new.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 # Original Matlab code by Michel Arts
 # Ported to python by Sebastiaan van der Tol
 # Interface change: theta, phi are now in radians
@@ -64,5 +67,3 @@ def F42(m,n,theta,phi,beta):
     q3 = C * (-1j)**(-n) / beta * 1j * m/np.sin(theta) * np.sqrt((2.*n+1) / 2.0 * np.math.factorial(n-abs(m)) / np.math.factorial(n+abs(m))) * P(abs(m),n,np.cos(theta)) * np.exp(1j*m*phi)
 
     return (q1, q2, q3)
-
-
diff --git a/scripts/misc/add_beaminfo.py b/scripts/misc/add_beaminfo.py
index daada8f9c556d3aeaf4707ff699f2f6611e141cb..1beb237aef8e4ad157016912b5d4dbacf370d464 100755
--- a/scripts/misc/add_beaminfo.py
+++ b/scripts/misc/add_beaminfo.py
@@ -1,4 +1,6 @@
 #!/usr/bin/env python3
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 """ Add beam info to OSKAR generated MeasurementSet """
 
diff --git a/scripts/misc/calc_modes_1deg_noback.py b/scripts/misc/calc_modes_1deg_noback.py
index 0d0003693901786dd47a95a4e0f10a874dc6e626..e9d03fd484d4a96689e97e14d90397752947d515 100644
--- a/scripts/misc/calc_modes_1deg_noback.py
+++ b/scripts/misc/calc_modes_1deg_noback.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 import numpy as np
 from scipy.constants import speed_of_light
 from scipy.io import loadmat
diff --git a/scripts/misc/hamaker_vs_lobes.py b/scripts/misc/hamaker_vs_lobes.py
index 1202a1d41eb27d89c670b565952c7d985b1ca1b7..f345d12b9150ed171327f6989b50f1f583b5b11d 100644
--- a/scripts/misc/hamaker_vs_lobes.py
+++ b/scripts/misc/hamaker_vs_lobes.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
+
 import matplotlib
 matplotlib.use('tkagg')
 from matplotlib import pyplot as plt
@@ -69,5 +72,3 @@ plt.xlabel('phi(deg)')
 plt.ylabel('E (V)')
 
 plt.show()
-
-
diff --git a/scripts/misc/test_beam_model.py b/scripts/misc/test_beam_model.py
index 84aaee643057042ca2bccddfaa4cc2a243c5cd93..eef9c511522c768f4873c68c5320989c36f8f4c6 100755
--- a/scripts/misc/test_beam_model.py
+++ b/scripts/misc/test_beam_model.py
@@ -1,4 +1,6 @@
 #!/usr/bin/env python3
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 import lobes
 from scipy.io import loadmat
@@ -40,5 +42,3 @@ Nfreq = 4
 Nant = 96
 
 rr = r.reshape((Nphi, Ntheta, 2, Nfreq, Nant)).transpose((4,2,1,0,3))
-
-
diff --git a/scripts/misc/test_lobes.py b/scripts/misc/test_lobes.py
index d6245d1ed1d28103723de165384a70f6d251551d..541528b81587a5e44e93f408615c3a2741ed0d7c 100755
--- a/scripts/misc/test_lobes.py
+++ b/scripts/misc/test_lobes.py
@@ -1,4 +1,6 @@
 #!/usr/bin/env python3
+# Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
+# SPDX-License-Identifier: GPL-3.0-or-later
 
 import numpy as np
 
@@ -9,4 +11,3 @@ a = np.linspace(0, 0.5, 10)
 lobes.scale(a, 2.0)
 
 print(lobes.legendre(1,-11,a))
-
diff --git a/scripts/run-clang-format.sh b/scripts/run-clang-format.sh
index 48c99ceeb43603d881881ea544e9d8e483ba0f2d..0186236494078496fa2d0294e7fa5734fe5c70d1 100755
--- a/scripts/run-clang-format.sh
+++ b/scripts/run-clang-format.sh
@@ -1,9 +1,9 @@
 #!/bin/bash
-#
-# run-clang-format.sh: Formats source code in this repo in accordance with .clang-format file.
-# This file is part of the DP3 software package.
+
 # Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
-# License: GNU General Public License version 3 or any later version
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+# run-clang-format.sh: Formats source code in this repo in accordance with .clang-format file.
 #
 # To hook this script to pre-commit include the line
 # "./scripts/run-clang-format.sh" to .git/hooks/pre-commit