commit 62689290469cf814f6e13d5eaad39a364a594c95
Author: aalvarez <aalvarez@localhost.localdomain>
Date:   Mon Jul 10 09:34:04 2023 +0200

    Remove examples

diff --git a/ElementsExamples/CMakeLists.txt b/ElementsExamples/CMakeLists.txt
deleted file mode 100644
index d313b3c9..00000000
--- a/ElementsExamples/CMakeLists.txt
+++ /dev/null
@@ -1,374 +0,0 @@
-# Declare ElementsExamples as an Elements module
-elements_subdir(ElementsExamples)
-
-# Declare Elements module dependencies
-#    This module is using of the ElementsKernel module
-elements_depends_on_subdirs(ElementsKernel)
-
-# Declare external library dependencies
-#    This module is using the Boost C++ library
-#    CppUnit and GMock are optional dependencies
-find_package(Boost REQUIRED COMPONENTS unit_test_framework)
-find_package(CppUnit)
-find_package(GMock)
-
-#===== Libraries ===============================================================
-# Instruction for creating a C++ library
-#    ElementsExamples is the library name
-#    src/Lib/*.cpp are the source files
-elements_add_library(ElementsExamples src/lib/default/*.cpp src/lib/default/*.c
-                     INCLUDE_DIRS  ElementsKernel
-                     LINK_LIBRARIES  ElementsKernel
-                     PUBLIC_HEADERS ElementsExamples)
-add_library(Elements::Examples ALIAS ElementsExamples)
-
-elements_add_library(ElementsOther src/lib/other/*.cpp
-                     INCLUDE_DIRS  ElementsKernel
-                     LINK_LIBRARIES  ElementsKernel
-                     PUBLIC_HEADERS ElementsExamples)
-add_library(Elements::Other ALIAS ElementsOther)
-
-
-#===== Executables =============================================================
-# Instruction for creating a C++ executable
-#    CppProgramExample is the executable name
-#    src/Program/ProgramExample.cpp is the source file
-elements_add_executable(CppProgramExample src/program/Program.cpp
-                        INCLUDE_DIRS ElementsExamples ElementsOther
-                        LINK_LIBRARIES ElementsExamples ElementsOther)
-
-elements_add_executable(CppExtProgramExample src/program/ExtProgram.cpp
-                        INCLUDE_DIRS ElementsExamples ElementsOther
-                        LINK_LIBRARIES ElementsExamples ElementsOther)
-
-
-elements_add_executable(ElementsSimpleProgramExample src/program/SimpleProgram.cpp
-                        INCLUDE_DIRS ElementsExamples
-                        LINK_LIBRARIES ElementsExamples)
-
-elements_add_executable(ElementsAnotherSimpleProgramExample src/program/AnotherSimpleProgram.cpp
-                        INCLUDE_DIRS ElementsExamples
-                        LINK_LIBRARIES ElementsExamples)
-
-elements_add_executable(ElementsProgramExampleWithArguments src/program/ProgramWithArguments.cpp
-                        INCLUDE_DIRS ElementsExamples
-                        LINK_LIBRARIES ElementsExamples)
-
-# Example of a pure C program with a C++-compatible header file example.
-elements_add_executable(CProgramExample src/CProgram/*.c
-                        INCLUDE_DIRS ElementsExamples
-                        LINK_LIBRARIES ElementsExamples stdc++)
-
-#===== Test that the executables do run ========================================
-
-elements_add_test(CppProgramExampleRun COMMAND CppProgramExample)
-elements_add_test(CppProgramExampleNoConfigFile COMMAND CppProgramExample --config-file=toto.conf FAILS)
-elements_add_test(CppProgramExampleWrongArgument COMMAND CppProgramExample --toto FAILS)
-elements_add_test(CppProgramExampleWrongLevel COMMAND CppProgramExample --log-level dddsc FAILS)
-elements_add_test(CProgramExampleRun COMMAND CProgramExample)
-elements_add_test(ElementsSimpleProgramExampleRun COMMAND ElementsSimpleProgramExample)
-elements_add_test(ElementsProgramExampleWithArgumentsRun COMMAND ElementsProgramExampleWithArguments)
-
-#====== Standalone Test with explicit environment passing ========================
-
-elements_add_unit_test(TestEnvironment tests/src/Boost/TestEnvironment_test.cpp
-                       EXECUTABLE TestEnvironment_test
-                       LINK_LIBRARIES ElementsExamples
-                       TYPE Boost
-                       ENVIRONMENT MYTESTENV=FooBar)
-
-#===== Boost tests =============================================================
-# Example with automatically generated TestMain.cpp. This is always the case if the TYPE of
-# the test is Boost.
-elements_add_unit_test(BoostClassExample tests/src/Boost/ClassExample_test.cpp
-                       EXECUTABLE BoostClassExample_test
-                       INCLUDE_DIRS ElementsExamples
-                       LINK_LIBRARIES ElementsExamples TYPE Boost)
-
-
-
-elements_add_unit_test(FunctionExample tests/src/Boost/FunctionExample_test.cpp
-                       EXECUTABLE FunctionExample_test
-                       INCLUDE_DIRS ElementsExamples
-                       LINK_LIBRARIES ElementsExamples TYPE Boost)
-
-# example with the second library
-elements_add_unit_test(BoostClassExample2 tests/src/Boost/ClassExample2_test.cpp
-                       EXECUTABLE BoostClassExample2_test
-                       INCLUDE_DIRS ElementsOther
-                       LINK_LIBRARIES ElementsOther TYPE Boost)
-
-elements_add_unit_test(FunctionExample2 tests/src/Boost/FunctionExample2_test.cpp
-                       EXECUTABLE FunctionExample2_test
-                       INCLUDE_DIRS ElementsOther
-                       LINK_LIBRARIES ElementsOther TYPE Boost)
-
-
-# Example with explict TestMain.cpp. Please mind the "unit_test_framework" in the boost components
-# from the find_package command. The Boost components have to be also explicitly added to the
-# LINK_LIBRARIES argument.
-elements_add_unit_test(BoostClassExampleWithMain tests/src/Boost/ClassExample_test.cpp tests/src/Boost/TestMain.cpp
-                       EXECUTABLE BoostClassExampleWithMain_test
-                       INCLUDE_DIRS Boost::unit_test_framework ElementsExamples
-                       LINK_LIBRARIES Boost::unit_test_framework ElementsExamples)
-
-elements_add_unit_test(ModuleInfo tests/src/Boost/ModuleInfo_test.cpp
-                       EXECUTABLE ElementsExamplesModuleInfo_test
-                       INCLUDE_DIRS ElementsExamples
-                       LINK_LIBRARIES ElementsExamples TYPE Boost)
-
-elements_add_unit_test(AllTests tests/src/Boost/*_test.cpp
-                       EXECUTABLE BoostElementsExampleAllTests
-                       INCLUDE_DIRS ElementsExamples ElementsOther
-                       LINK_LIBRARIES ElementsExamples ElementsOther
-                       ENVIRONMENT MYTESTENV=FooBar
-                       TYPE Boost)
-
-elements_add_unit_test(UnitTestExample_test tests/src/Boost/UnitTestExample_test.cpp
-                       INCLUDE_DIRS ElementsExamples
-                       LINK_LIBRARIES ElementsExamples TYPE Boost)
-
-elements_add_unit_test(Rectangle tests/src/Boost/Rectangle_test.cpp
-                       EXECUTABLE Rectangle_test
-                       INCLUDE_DIRS ElementsExamples
-                       LINK_LIBRARIES ElementsExamples TYPE Boost)
-
-elements_add_unit_test(PiCalculator tests/src/Boost/PiCalculator_test.cpp
-                       EXECUTABLE PiCalculator_test
-                       INCLUDE_DIRS ElementsExamples
-                       LINK_LIBRARIES ElementsExamples TYPE Boost)
-
-elements_add_unit_test(crashingFunction tests/src/Boost/crashingFunction_test.cpp
-                       EXECUTABLE crashingFunction_test
-                       INCLUDE_DIRS ElementsExamples
-                       LINK_LIBRARIES ElementsExamples TYPE Boost)
-
-#===== CppUnit tests =============================================================
-
-if(CPPUNIT_FOUND)
-# CppUnit Type test
-elements_add_unit_test(OtherClassExample tests/src/CppUnit/ClassExample_test.cpp
-                       EXECUTABLE OtherClassExample_test
-                       INCLUDE_DIRS ElementsExamples
-                       LINK_LIBRARIES ElementsExamples TYPE CppUnit)
-
-# Test with the CppUnit library. The TestMain.cpp is not generated
-elements_add_unit_test(OtherClassExampleWithMain tests/src/CppUnit/ClassExample_test.cpp tests/src/CppUnit/TestMain.cpp
-                       EXECUTABLE ElementsExamples_OtherClassExampleWithMain_test
-                       LINK_LIBRARIES CppUnit::cppunit ElementsExamples
-                       INCLUDE_DIRS CppUnit::cppunit ElementsExamples
-                       LABELS CustomLabel CppUnit)
-endif()
-
-#===== Tests using GMock =======================================================
-if(GMOCK_FOUND)
-
-elements_add_unit_test(DataSourceUser_test_suite tests/src/GMock/DataSourceUser_test.cpp
-                       LINK_LIBRARIES GMock ElementsExamples TYPE Boost
-                       INCLUDE_DIRS GMock ElementsExamples
-                       LABELS GMock)
-
-elements_add_unit_test(TemplatedDataSourceUser_test_suite tests/src/GMock/TemplatedDataSourceUser_test.cpp
-                       LINK_LIBRARIES GMock ElementsExamples TYPE Boost
-                       INCLUDE_DIRS GMock ElementsExamples
-                       LABELS GMock)
-
-# inhibits the -Wsuggest-override that is not supported by gmock (yet)
-if(CXX_HAS_SUGGEST_OVERRIDE)
-  set_property(SOURCE tests/src/GMock/DataSourceUser_test.cpp tests/src/GMock/TemplatedDataSourceUser_test.cpp
-               APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-suggest-override")
-endif() 
-                
-                       
-endif(GMOCK_FOUND)
-
-#====== Build Tests =================================================================
-
-
-elements_add_executable(BackTraceExample src/program/BackTrace.cpp
-                        INCLUDE_DIRS ElementsExamples
-                        LINK_LIBRARIES ElementsExamples)
-elements_add_test(BackTraceFailure COMMAND BackTraceExample FAILS)
-
-elements_add_executable(FloatPrecisionExample src/program/FloatPrecision.cpp
-                        INCLUDE_DIRS ElementsExamples
-                        LINK_LIBRARIES ElementsExamples)
-elements_add_test(FloatPrecsionExampleWorks COMMAND FloatPrecisionExample LABELS Float Build)
-
-
-find_package(GSL QUIET)
-if(GSL_FOUND)
-elements_add_executable(GslExample src/program/Gsl.cpp
-                        INCLUDE_DIRS GSL ElementsExamples
-                        LINK_LIBRARIES GSL ElementsExamples)
-elements_add_test(GSLWorks COMMAND GslExample LABELS GSL Build)
-endif()
-
-
-find_package(HealpixCpp QUIET)
-if(HEALPIXCPP_FOUND AND HEALPIXCPP_NEW_LAYOUT)
-elements_add_executable(HealpixExample src/program/Healpix.cpp
-                        INCLUDE_DIRS HealpixCpp ElementsExamples
-                        LINK_LIBRARIES HealpixCpp ElementsExamples)
-elements_add_test(HealpixCppWorks COMMAND HealpixExample LABELS Healpix Build)
-endif()
-
-
-find_package(XercesC QUIET)
-if(XERCESC_FOUND)
-elements_add_executable(XercesExample src/program/Xerces.cpp
-                        INCLUDE_DIRS XercesC ElementsExamples
-                        LINK_LIBRARIES XercesC ElementsExamples)
-elements_add_test(XercesCWorks COMMAND XercesExample LABELS Xerces Build)
-endif()
-
-
-find_package(WCSLIB QUIET)
-if(WCSLIB_FOUND)
-elements_add_executable(WcsExample src/program/Wcs.cpp
-                        INCLUDE_DIRS WCSLIB ElementsExamples
-                        LINK_LIBRARIES WCSLIB ElementsExamples)
-elements_add_test(WCSLIBWorks COMMAND WcsExample LABELS Wcs Build)
-endif()
-
-
-find_package(FFTW QUIET)
-if(FFTW_FOUND)
-elements_add_executable(FftwExample src/program/Fftw.cpp
-                        INCLUDE_DIRS FFTW ElementsExamples
-                        LINK_LIBRARIES FFTW ElementsExamples)
-elements_add_test(FFTWWorks COMMAND FftwExample LABELS Fftw Build)
-endif()
-
-find_package(Eigen3 QUIET)
-if(EIGEN3_FOUND)
-elements_add_executable(EigenExample src/program/Eigen.cpp
-                        LINK_LIBRARIES Eigen3::eigen3 ElementsExamples
-                        INCLUDE_DIRS Eigen3::eigen3 ElementsExamples)
-elements_add_test(EigenWorks COMMAND EigenExample LABELS Eigen Build)
-endif()
-
-find_package(CCfits QUIET)
-if(CCFITS_FOUND)
-elements_add_executable(CCfitsExample src/program/CCfits.cpp
-                        LINK_LIBRARIES CCfits ElementsExamples
-                        INCLUDE_DIRS CCfits ElementsExamples)
-elements_add_test(CCfitsWorks COMMAND CCfitsExample LABELS CCfits Build)
-endif()
-
-find_package(Cfitsio QUIET)
-if(CFITSIO_FOUND AND CFITSIO_IS_REENTRANT)
-elements_add_executable(CfitsioExample src/program/Cfitsio.cpp
-                        LINK_LIBRARIES Cfitsio ElementsExamples
-                        INCLUDE_DIRS Cfitsio ElementsExamples)
-elements_add_test(CfitsioWorks COMMAND CfitsioExample LABELS Cfitsio Build)
-endif()
-
-find_package(GnuAstro QUIET)
-if(GNUASTRO_FOUND)
-elements_add_executable(GnuAstroExample src/program/GnuAstro.cpp
-                        LINK_LIBRARIES GnuAstro ElementsExamples
-                        INCLUDE_DIRS GnuAstro ElementsExamples)
-elements_add_test(GnuAstroWorks COMMAND GnuAstroExample LABELS GnuAstro Build)
-endif()
-
-elements_add_executable(OpenMPExample src/program/OpenMP.cpp
-                        LINK_LIBRARIES ElementsExamples
-                        INCLUDE_DIRS ElementsExamples)
-elements_add_test(OpenMPWorks COMMAND OpenMPExample LABELS OpenMP Build)
-
-
-find_package(SWIG QUIET)
-find_package(PythonLibs ${PYTHON_EXPLICIT_VERSION} QUIET)
-if(SWIG_FOUND AND PYTHONLIBS_FOUND)
-elements_add_swig_binding(SwigExample ElementsExamples/SwigExample.i
-                          LINK_LIBRARIES ElementsExamples
-                          INCLUDE_DIRS ElementsExamples
-                          PUBLIC_HEADERS ElementsExamples)
-                          
-find_package(NumPy)
-if(NUMPY_FOUND)
-elements_add_swig_binding(NumPyExample  ElementsExamples/NumPyExample.i
-                          INCLUDE_DIRS NumPy
-                          NO_PUBLIC_HEADERS)
-endif()
-
-endif()
-
-find_package(Cython QUIET)
-find_package(PythonLibs ${PYTHON_EXPLICIT_VERSION} QUIET)
-if(CYTHON_FOUND AND PYTHONLIBS_FOUND)
-elements_add_cython_module(src/Cython/lib/PiCalculator.pyx
-                           LINK_LIBRARIES ElementsExamples
-                           INCLUDE_DIRS ElementsExamples 
-                           NO_PUBLIC_HEADERS)
-elements_add_cython_module(src/Cython/lib/Rect.pyx
-                           LINK_LIBRARIES ElementsExamples
-                           INCLUDE_DIRS ElementsExamples
-                           PUBLIC_HEADERS ElementsExamples)
-endif()
-
-find_package(pybind11)
-if(pybind11_FOUND AND PYTHONLIBS_FOUND)
-  elements_add_pybind11_module(testCallBack src/pybind11/callback.cpp
-                               INCLUDE_DIRS ElementsExamples
-                               LINK_LIBRARIES ElementsExamples)  
-endif()
-
-#---Python modules, Scripts, conf and aux files ------------------------------------------------------------
-
-elements_install_python_modules(TEST_TIMEOUT 60)
-
-#===== Python programs =========================================================
-# Instruction for creating a Python executable
-#    PythonProgramExample is the executable name
-#    ElementsExamples.PythonProgramExample is the source file
-elements_add_python_program(PythonProgramExample ElementsExamples.PythonProgramExample)
-if(SWIG_FOUND AND PYTHONLIBS_FOUND)
-  elements_add_python_program(SwigProgramExample ElementsExamples.SwigProgramExample)
-endif()
-
-
-#===== Test that the python program does run ========================================
-elements_add_test(PythonProgramExampleRun COMMAND PythonProgramExample)
-elements_add_test(PythonProgramExampleNoConfigFile COMMAND PythonProgramExample --config-file=toto.conf FAILS)
-if(SWIG_FOUND AND PYTHONLIBS_FOUND)
-elements_add_test(SwigProgramExampleRun COMMAND SwigProgramExample LABELS Swig Build)
-endif()
-
-if(pybind11_FOUND)
-  elements_add_python_program(PyBind11ProgramExample ElementsExamples.PyBind11ProgramExample)
-  elements_add_test(PyBind11ProgramExampleRun COMMAND PyBind11ProgramExample)
-endif()
-
-elements_install_scripts()
-
-elements_add_python_program(PythonTestProgramExample ElementsExamples.PythonTestProgramExample)
-
-elements_add_test(PythonTestProgram COMMAND PythonTestProgramExample)
-
-elements_add_python_program(PythonSpawnExample ElementsExamples.SpawnExample)
-
-elements_add_test(PythonSpawnTest COMMAND PythonSpawnExample)
-
-
-elements_add_test(ScriptThatSucceeds COMMAND ScriptThatSucceeds_test LABELS CustomLabel)
-elements_add_test(ScriptThatChecksFile COMMAND ScriptThatChecksFile_test)
-
-elements_add_test(ScriptThatFails COMMAND ScriptThatFails_test FAILS)
-elements_add_test(ScriptThatGivesOutput COMMAND ScriptThatGivesOutput_test PASSREGEX ".*good")
-elements_add_test(ScriptThatGivesError COMMAND ScriptThatGivesError_test FAILREGEX ".*bad" FAILS)
-elements_add_test(ScriptThatGivesStdError COMMAND ScriptThatGivesStdError_test FAILREGEX ".*worse" FAILS)
-
-elements_add_test(CppProgramExample COMMAND CppProgramExample)
-elements_add_test(CppExtProgramExample COMMAND CppExtProgramExample)
-elements_add_test(SimpleProgramExample COMMAND ElementsSimpleProgramExample)
-elements_add_test(AnotherSimpleProgramExample COMMAND ElementsAnotherSimpleProgramExample FAILS)
-
-elements_add_test(UnrecognizedOption COMMAND UnrecognizedOption_test)
-elements_add_test(OptionPrecedence COMMAND OptionPrecedence_test)
-
-
-elements_install_conf_files()
-elements_install_aux_files()
-
diff --git a/ElementsExamples/ElementsExamples/CRectangle.pxd b/ElementsExamples/ElementsExamples/CRectangle.pxd
deleted file mode 100644
index d485d114..00000000
--- a/ElementsExamples/ElementsExamples/CRectangle.pxd
+++ /dev/null
@@ -1,8 +0,0 @@
-cdef extern from "ElementsExamples/Rectangle.h" namespace "Elements::Examples":
-    cdef cppclass Rectangle:
-        Rectangle(int, int, int, int)
-        int x0, y0, x1, y1
-        int getLength()
-        int getHeight()
-        int getArea()
-        void move(int, int)
\ No newline at end of file
diff --git a/ElementsExamples/ElementsExamples/ClassExample.h b/ElementsExamples/ElementsExamples/ClassExample.h
deleted file mode 100644
index 99cc9872..00000000
--- a/ElementsExamples/ElementsExamples/ClassExample.h
+++ /dev/null
@@ -1,208 +0,0 @@
-/**
- * @file ClassExample.h
- *
- * @date January 9, 2015
- * @author Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-/**
- * @addtogroup ElementsExamples ElementsExamples
- * @{
- */
-
-#ifndef ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_CLASSEXAMPLE_H_
-#define ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_CLASSEXAMPLE_H_
-
-#include <memory>  // for std::unique_ptr
-#include <string>  // for std::string
-#include <vector>  // for std::vector
-
-#include <cstdint>  // for std::int64_t
-
-#include "ElementsKernel/Export.h"
-
-namespace Elements {
-namespace Examples {
-
-/**
- * @class ClassExample
- * @ingroup ElementsExamples
- * @brief
- *    An class example
- * @details
- *    Our naming convention and coding standard are used in this example
- * @startuml
- * class ClassExample {
- *  +ClassExample {static} factoryMethod()
- *  +std::string& {static} getStaticString()
- *  +double fundamentalTypeMethod(const double, const double) const
- *  -double m_ra
- *  -const std::string {static} s_static_string
- *  -std::int64_t m_source_id
- * }
- * @enduml
- */
-class ELEMENTS_API ClassExample {
-
-public:
-  /**
-   * @brief
-   *    Example factory method
-   * @details
-   *
-   * @param source_id
-   *    The source identifier
-   * @param ra
-   *    Right Ascension coordinate
-   *
-   */
-  static ClassExample factoryMethod(const std::int64_t source_id, const double ra);
-
-  /*
-   * Getter to access the static private string
-   */
-  static const std::string& getStaticString() {
-    return s_static_string;
-  }
-
-  /**
-   * @brief Destructor
-   */
-  virtual ~ClassExample() = default;
-
-  /**
-   * @brief
-   *    Simple method example
-   * @details
-   *    This is a simple example method, taking a double variable in input and
-   *    returning a double value. The displayed way to pass and return fundamental
-   *    type variables is recommended as the cost of copying them is small.
-   *
-   *    The const keyword send a meaningful message to the user. The
-   *    "input_variable" will not be modified and can safely be reused after
-   *    the call to "fundamentalTypesMethod".
-   *
-   *    The syntax
-   *
-   *    output = methodName(input)
-   *
-   *    is strongly recommended. With C++11, the std::tuple can be used to return
-   *    a set of values or objects.
-   *
-   * @param input_variable
-   *    The input_variable double value
-   *
-   * @return
-   *    The output of the method
-   */
-  double fundamentalTypeMethod(const double input_variable) const;
-
-  /**
-   * @brief
-   *    Divide two double variables
-   * @details
-   *    This is a simple class to illustrate the case of a method which can
-   *    throw an exception
-   *
-   * @param first
-   *    The first double value
-   * @param second
-   *    The second double value
-   * @return
-   *    The division of the two double values
-   * @throws
-   *   EuclidException, if the second number is (close to) zero
-   */
-  double divideNumbers(const double first, const double second) const;
-
-  /**
-   * @brief
-   *    Example method with a unique pointer argument
-   * @details
-   *    This illustrates the case where the ownership of the
-   *    pointed object is transfered to the method. Users will have
-   *    to move the object (syntax: move(p)) and cannot reused it
-   *    afterwards in the calling code.
-   *
-   *    The vector is used here as an example object.
-   *
-   * @param vector_unique_ptr
-   *    Unique pointer to a vector object
-   */
-  void passingUniquePointer(std::unique_ptr<std::vector<double>> vector_unique_ptr) const;
-
-  /**
-   * @brief
-   *    Example method taking an object in input
-   * @details
-   *    General method example taking any object in input. Because a
-   *    const reference is used, the method can accept both a rvalue or
-   *    a rvalue as an argument.
-   *
-   *    The vector is used here as an example object.
-   *
-   * @param input_object
-   *    a vector of double
-   */
-  void passingObjectInGeneral(const std::vector<double>& input_object) const;
-
-  /**
-   * Getter to access private sourceId
-   */
-  std::int64_t getSourceId() const {
-    return m_source_id;
-  }
-
-  /**
-   * Getter to access private m_ra
-   *
-   */
-  double getRa() const {
-    return m_ra;
-  }
-
-private:
-  /**
-   * @brief Constructor
-   *
-   * @details
-   *
-   * We propose a public factory and private constructor.
-   * This is not really useful here, but could be interesting in
-   * a more elaborated call especially if the factory is returning
-   * an abstract class (interface) and that different implementation
-   * can be chosen via the factory.
-   *
-   */
-  ClassExample(const std::int64_t source_id, const double ra) : m_source_id(source_id), m_ra(ra) {}
-
-  /// An example of a static string
-  static const std::string s_static_string;
-
-  /// Source ID as an example of a 64 bits integer
-  std::int64_t m_source_id{0};
-
-  /// Source right ascension
-  double m_ra{0.0};
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-#endif  // ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_CLASSEXAMPLE_H_
-
-/**@}*/
diff --git a/ElementsExamples/ElementsExamples/ClassExample2.h b/ElementsExamples/ElementsExamples/ClassExample2.h
deleted file mode 100644
index 28a7a52d..00000000
--- a/ElementsExamples/ElementsExamples/ClassExample2.h
+++ /dev/null
@@ -1,198 +0,0 @@
-/**
- * @file ClassExample.h
- *
- * @date January 9, 2015
- * @author Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-/**
- * @addtogroup ElementsExamples ElementsExamples
- * @{
- */
-
-#ifndef ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_CLASSEXAMPLE2_H_
-#define ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_CLASSEXAMPLE2_H_
-
-#include <memory>  // for std::unique_ptr
-#include <string>  // for std::string
-#include <vector>  // for std::vector
-
-#include <cstdint>  // for std::int64_t
-
-#include "ElementsKernel/Export.h"
-
-namespace Elements {
-namespace Examples {
-
-/**
- * @class ClassExample
- * @ingroup ElementsExamples
- * @brief
- *    An class example
- * @details
- *    Our naming convention and coding standard are used in this example
- */
-class ELEMENTS_API ClassExample2 {
-
-public:
-  /**
-   * @brief
-   *    Example factory method
-   * @details
-   *
-   * @param source_id
-   *    The source identifier
-   * @param ra
-   *    Right Ascension coordinate
-   *
-   */
-  static ClassExample2 factoryMethod(const std::int64_t source_id, const double ra);
-
-  /*
-   * Getter to access the static private string
-   */
-  static const std::string& getStaticString() {
-    return s_static_string;
-  }
-
-  /**
-   * @brief Destructor
-   */
-  virtual ~ClassExample2() = default;
-
-  /**
-   * @brief
-   *    Simple method example
-   * @details
-   *    This is a simple example method, taking a double variable in input and
-   *    returning a double value. The displayed way to pass and return fundamental
-   *    type variables is recommended as the cost of copying them is small.
-   *
-   *    The const keyword send a meaningful message to the user. The
-   *    "input_variable" will not be modified and can safely be reused after
-   *    the call to "fundamentalTypesMethod".
-   *
-   *    The syntax
-   *
-   *    output = methodName(input)
-   *
-   *    is strongly recommended. With C++11, the std::tuple can be used to return
-   *    a set of values or objects.
-   *
-   * @param input_variable
-   *    The input_variable double value
-   *
-   * @return
-   *    The output of the method
-   */
-  double fundamentalTypeMethod(const double input_variable) const;
-
-  /**
-   * @brief
-   *    Divide two double variables
-   * @details
-   *    This is a simple class to illustrate the case of a method which can
-   *    throw an exception
-   *
-   * @param first
-   *    The first double value
-   * @param second
-   *    The second double value
-   * @return
-   *    The division of the two double values
-   * @throws
-   *   EuclidException, if the second number is (close to) zero
-   */
-  double divideNumbers(const double first, const double second) const;
-
-  /**
-   * @brief
-   *    Example method with a unique pointer argument
-   * @details
-   *    This illustrates the case where the ownership of the
-   *    pointed object is transfered to the method. Users will have
-   *    to move the object (syntax: move(p)) and cannot reused it
-   *    afterwards in the calling code.
-   *
-   *    The vector is used here as an example object.
-   *
-   * @param vector_unique_ptr
-   *    Unique pointer to a vector object
-   */
-  void passingUniquePointer(std::unique_ptr<std::vector<double>> vector_unique_ptr) const;
-
-  /**
-   * @brief
-   *    Example method taking an object in input
-   * @details
-   *    General method example taking any object in input. Because a
-   *    const reference is used, the method can accept both a rvalue or
-   *    a rvalue as an argument.
-   *
-   *    The vector is used here as an example object.
-   *
-   * @param input_object
-   *    a vector of double
-   */
-  void passingObjectInGeneral(const std::vector<double>& input_object) const;
-
-  /**
-   * Getter to access private sourceId
-   */
-  std::int64_t getSourceId() const {
-    return m_source_id;
-  }
-
-  /**
-   * Getter to access private m_ra
-   *
-   */
-  double getRa() const {
-    return m_ra;
-  }
-
-private:
-  /**
-   * @brief Constructor
-   *
-   * @details
-   *
-   * We propose a public factory and private constructor.
-   * This is not really useful here, but could be interesting in
-   * a more elaborated call especially if the factory is returning
-   * an abstract class (interface) and that different implementation
-   * can be chosen via the factory.
-   *
-   */
-  ClassExample2(const std::int64_t source_id, const double ra) : m_source_id(source_id), m_ra(ra) {}
-
-  /// An example of a static string
-  static std::string s_static_string;
-
-  /// Source ID as an example of a 64 bits integer
-  std::int64_t m_source_id{0};
-
-  /// Source right ascension
-  double m_ra{0.0};
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-#endif  // ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_CLASSEXAMPLE2_H_
-
-/**@}*/
diff --git a/ElementsExamples/ElementsExamples/DataSourceUser.h b/ElementsExamples/ElementsExamples/DataSourceUser.h
deleted file mode 100644
index a6760cee..00000000
--- a/ElementsExamples/ElementsExamples/DataSourceUser.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- * @file DataSourceUser.h
- *
- * @date Sep 23, 2015
- * @author Florian Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-/**
- * @addtogroup ElementsExamples ElementsExamples
- * @{
- */
-
-#ifndef ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_DATASOURCEUSER_H_
-#define ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_DATASOURCEUSER_H_
-
-#include <cstdlib>  // for std::size_t
-
-#include "ElementsKernel/Export.h"  // For ELEMENTS_API
-
-namespace Elements {
-namespace Examples {
-
-/**
- * @class DataSourceInterface
- * @ingroup ElementsExamples
- * @brief This class has been created to demonstrate unit testing. It is an
- * Interface over a DataSource (a File, a DataBase Table, ...).
- *
- * @details
- * Note that as we test the call to this interface, no implementation is provided.
- */
-class DataSourceInterface {
-
-public:
-  /**
-   * @brief Count the number of records into the DataSource.
-   *
-   * @return
-   * A unsigned integer containing the number of records in the DataSource.
-   */
-  virtual std::size_t countRecords() const = 0;
-
-  /**
-   * @brief Fetch the value of the n-th record of the DataSource.
-   *
-   * @param index
-   * The zero-based index of the record into the DataSource.
-   *
-   * @return The value of the record at the provided index.
-   *
-   * @throw Elements::Exception
-   * If no record exists at the specified index.
-   */
-  virtual double getRecordValue(std::size_t index) const = 0;
-
-  virtual ~DataSourceInterface() = default;
-};
-
-/**
- * @class DataSourceUser
- * @brief This class has been created to demonstrate unit testing. It manipulates
- * an object implementing DataSourceInterface.
- */
-class ELEMENTS_API DataSourceUser {
-
-public:
-  /**
-   * @brief Compute the sum of the values of the records stored into the provided
-   * DataSource
-   *
-   * @param data_source
-   * A reference to an object implementing DataSourceInterface.
-   *
-   * @return The sum of the values of the records into the DataSource object
-   */
-  double sumRecords(const DataSourceInterface& data_source);
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-#endif  // ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_DATASOURCEUSER_H_
-
-/**@}*/
diff --git a/ElementsExamples/ElementsExamples/ModuleInfo.h b/ElementsExamples/ElementsExamples/ModuleInfo.h
deleted file mode 100644
index 8500e63f..00000000
--- a/ElementsExamples/ElementsExamples/ModuleInfo.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * @file ElementsExamples/ModuleInfo.h
- *
- * @date Feb 12, 2015
- * @author hubert
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-/**
- * @addtogroup ElementsExamples ElementsExamples
- * @{
- */
-
-#ifndef ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_MODULEINFO_H_
-#define ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_MODULEINFO_H_
-
-#include "ElementsKernel/Export.h"
-#include "ElementsKernel/ModuleInfo.h"
-
-namespace Elements {
-namespace Examples {
-
-ELEMENTS_API const System::ModuleInfo& getModuleInfo();
-
-}  // namespace Examples
-}  // namespace Elements
-
-#endif  // ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_MODULEINFO_H_
-
-/**@}*/
diff --git a/ElementsExamples/ElementsExamples/NumPyExample.i b/ElementsExamples/ElementsExamples/NumPyExample.i
deleted file mode 100644
index 2ddc11de..00000000
--- a/ElementsExamples/ElementsExamples/NumPyExample.i
+++ /dev/null
@@ -1,3161 +0,0 @@
-/* -*- C -*-  (not really, but good for syntax highlighting) */
-
-/*
- * Copyright (c) 2005-2015, NumPy Developers.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- *        notice, this list of conditions and the following disclaimer.
- *
- *     * Redistributions in binary form must reproduce the above
- *        copyright notice, this list of conditions and the following
- *        disclaimer in the documentation and/or other materials provided
- *        with the distribution.
- *
- *     * Neither the name of the NumPy Developers nor the names of any
- *        contributors may be used to endorse or promote products derived
- *        from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifdef SWIGPYTHON
-
-%{
-#ifndef SWIG_FILE_WITH_INIT
-#define NO_IMPORT_ARRAY
-#endif
-#include "stdio.h"
-#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
-#include <numpy/arrayobject.h>
-%}
-
-/**********************************************************************/
-
-%fragment("NumPy_Backward_Compatibility", "header")
-{
-%#if NPY_API_VERSION < 0x00000007
-%#define NPY_ARRAY_DEFAULT NPY_DEFAULT
-%#define NPY_ARRAY_FARRAY  NPY_FARRAY
-%#define NPY_FORTRANORDER  NPY_FORTRAN
-%#endif
-}
-
-/**********************************************************************/
-
-/* The following code originally appeared in
- * enthought/kiva/agg/src/numeric.i written by Eric Jones.  It was
- * translated from C++ to C by John Hunter.  Bill Spotz has modified
- * it to fix some minor bugs, upgrade from Numeric to numpy (all
- * versions), add some comments and functionality, and convert from
- * direct code insertion to SWIG fragments.
- */
-
-%fragment("NumPy_Macros", "header")
-{
-/* Macros to extract array attributes.
- */
-%#if NPY_API_VERSION < 0x00000007
-%#define is_array(a)            ((a) && PyArray_Check((PyArrayObject*)a))
-%#define array_type(a)          (int)(PyArray_TYPE((PyArrayObject*)a))
-%#define array_numdims(a)       (((PyArrayObject*)a)->nd)
-%#define array_dimensions(a)    (((PyArrayObject*)a)->dimensions)
-%#define array_size(a,i)        (((PyArrayObject*)a)->dimensions[i])
-%#define array_strides(a)       (((PyArrayObject*)a)->strides)
-%#define array_stride(a,i)      (((PyArrayObject*)a)->strides[i])
-%#define array_data(a)          (((PyArrayObject*)a)->data)
-%#define array_descr(a)         (((PyArrayObject*)a)->descr)
-%#define array_flags(a)         (((PyArrayObject*)a)->flags)
-%#define array_enableflags(a,f) (((PyArrayObject*)a)->flags) = f
-%#else
-%#define is_array(a)            ((a) && PyArray_Check(a))
-%#define array_type(a)          PyArray_TYPE((PyArrayObject*)a)
-%#define array_numdims(a)       PyArray_NDIM((PyArrayObject*)a)
-%#define array_dimensions(a)    PyArray_DIMS((PyArrayObject*)a)
-%#define array_strides(a)       PyArray_STRIDES((PyArrayObject*)a)
-%#define array_stride(a,i)      PyArray_STRIDE((PyArrayObject*)a,i)
-%#define array_size(a,i)        PyArray_DIM((PyArrayObject*)a,i)
-%#define array_data(a)          PyArray_DATA((PyArrayObject*)a)
-%#define array_descr(a)         PyArray_DESCR((PyArrayObject*)a)
-%#define array_flags(a)         PyArray_FLAGS((PyArrayObject*)a)
-%#define array_enableflags(a,f) PyArray_ENABLEFLAGS((PyArrayObject*)a,f)
-%#endif
-%#define array_is_contiguous(a) (PyArray_ISCONTIGUOUS((PyArrayObject*)a))
-%#define array_is_native(a)     (PyArray_ISNOTSWAPPED((PyArrayObject*)a))
-%#define array_is_fortran(a)    (PyArray_ISFORTRAN((PyArrayObject*)a))
-}
-
-/**********************************************************************/
-
-%fragment("NumPy_Utilities",
-          "header")
-{
-  /* Given a PyObject, return a string describing its type.
-   */
-  const char* pytype_string(PyObject* py_obj)
-  {
-    if (py_obj == NULL          ) return "C NULL value";
-    if (py_obj == Py_None       ) return "Python None" ;
-    if (PyCallable_Check(py_obj)) return "callable"    ;
-    if (PyString_Check(  py_obj)) return "string"      ;
-    if (PyInt_Check(     py_obj)) return "int"         ;
-    if (PyFloat_Check(   py_obj)) return "float"       ;
-    if (PyDict_Check(    py_obj)) return "dict"        ;
-    if (PyList_Check(    py_obj)) return "list"        ;
-    if (PyTuple_Check(   py_obj)) return "tuple"       ;
-%#if PY_MAJOR_VERSION < 3
-    if (PyFile_Check(    py_obj)) return "file"        ;
-    if (PyModule_Check(  py_obj)) return "module"      ;
-    if (PyInstance_Check(py_obj)) return "instance"    ;
-%#endif
-
-    return "unknown type";
-  }
-
-  /* Given a NumPy typecode, return a string describing the type.
-   */
-  const char* typecode_string(int typecode)
-  {
-    static const char* type_names[25] = {"bool",
-                                         "byte",
-                                         "unsigned byte",
-                                         "short",
-                                         "unsigned short",
-                                         "int",
-                                         "unsigned int",
-                                         "long",
-                                         "unsigned long",
-                                         "long long",
-                                         "unsigned long long",
-                                         "float",
-                                         "double",
-                                         "long double",
-                                         "complex float",
-                                         "complex double",
-                                         "complex long double",
-                                         "object",
-                                         "string",
-                                         "unicode",
-                                         "void",
-                                         "ntypes",
-                                         "notype",
-                                         "char",
-                                         "unknown"};
-    return typecode < 24 ? type_names[typecode] : type_names[24];
-  }
-
-  /* Make sure input has correct numpy type.  This now just calls
-     PyArray_EquivTypenums().
-   */
-  int type_match(int actual_type,
-                 int desired_type)
-  {
-    return PyArray_EquivTypenums(actual_type, desired_type);
-  }
-
-%#ifdef SWIGPY_USE_CAPSULE
-  void free_cap(PyObject * cap)
-  {
-    void* array = (void*) PyCapsule_GetPointer(cap,SWIGPY_CAPSULE_NAME);
-    if (array != NULL) free(array);
-  }
-%#endif
-
-
-}
-
-/**********************************************************************/
-
-%fragment("NumPy_Object_to_Array",
-          "header",
-          fragment="NumPy_Backward_Compatibility",
-          fragment="NumPy_Macros",
-          fragment="NumPy_Utilities")
-{
-  /* Given a PyObject pointer, cast it to a PyArrayObject pointer if
-   * legal.  If not, set the python error string appropriately and
-   * return NULL.
-   */
-  PyArrayObject* obj_to_array_no_conversion(PyObject* input,
-                                            int        typecode)
-  {
-    PyArrayObject* ary = NULL;
-    if (is_array(input) && (typecode == NPY_NOTYPE ||
-                            PyArray_EquivTypenums(array_type(input), typecode)))
-    {
-      ary = (PyArrayObject*) input;
-    }
-    else if is_array(input)
-    {
-      const char* desired_type = typecode_string(typecode);
-      const char* actual_type  = typecode_string(array_type(input));
-      PyErr_Format(PyExc_TypeError,
-                   "Array of type '%s' required.  Array of type '%s' given",
-                   desired_type, actual_type);
-      ary = NULL;
-    }
-    else
-    {
-      const char* desired_type = typecode_string(typecode);
-      const char* actual_type  = pytype_string(input);
-      PyErr_Format(PyExc_TypeError,
-                   "Array of type '%s' required.  A '%s' was given",
-                   desired_type,
-                   actual_type);
-      ary = NULL;
-    }
-    return ary;
-  }
-
-  /* Convert the given PyObject to a NumPy array with the given
-   * typecode.  On success, return a valid PyArrayObject* with the
-   * correct type.  On failure, the python error string will be set and
-   * the routine returns NULL.
-   */
-  PyArrayObject* obj_to_array_allow_conversion(PyObject* input,
-                                               int       typecode,
-                                               int*      is_new_object)
-  {
-    PyArrayObject* ary = NULL;
-    PyObject*      py_obj;
-    if (is_array(input) && (typecode == NPY_NOTYPE ||
-                            PyArray_EquivTypenums(array_type(input),typecode)))
-    {
-      ary = (PyArrayObject*) input;
-      *is_new_object = 0;
-    }
-    else
-    {
-      py_obj = PyArray_FROMANY(input, typecode, 0, 0, NPY_ARRAY_DEFAULT);
-      /* If NULL, PyArray_FromObject will have set python error value.*/
-      ary = (PyArrayObject*) py_obj;
-      *is_new_object = 1;
-    }
-    return ary;
-  }
-
-  /* Given a PyArrayObject, check to see if it is contiguous.  If so,
-   * return the input pointer and flag it as not a new object.  If it is
-   * not contiguous, create a new PyArrayObject using the original data,
-   * flag it as a new object and return the pointer.
-   */
-  PyArrayObject* make_contiguous(PyArrayObject* ary,
-                                 int*           is_new_object,
-                                 int            min_dims,
-                                 int            max_dims)
-  {
-    PyArrayObject* result;
-    if (array_is_contiguous(ary))
-    {
-      result = ary;
-      *is_new_object = 0;
-    }
-    else
-    {
-      result = (PyArrayObject*) PyArray_ContiguousFromObject((PyObject*)ary,
-                                                              array_type(ary),
-                                                              min_dims,
-                                                              max_dims);
-      *is_new_object = 1;
-    }
-    return result;
-  }
-
-  /* Given a PyArrayObject, check to see if it is Fortran-contiguous.
-   * If so, return the input pointer, but do not flag it as not a new
-   * object.  If it is not Fortran-contiguous, create a new
-   * PyArrayObject using the original data, flag it as a new object
-   * and return the pointer.
-   */
-  PyArrayObject* make_fortran(PyArrayObject* ary,
-                              int*           is_new_object)
-  {
-    PyArrayObject* result;
-    if (array_is_fortran(ary))
-    {
-      result = ary;
-      *is_new_object = 0;
-    }
-    else
-    {
-      Py_INCREF(array_descr(ary));
-      result = (PyArrayObject*) PyArray_FromArray(ary,
-                                                  array_descr(ary),
-                                                  NPY_FORTRANORDER);
-      *is_new_object = 1;
-    }
-    return result;
-  }
-
-  /* Convert a given PyObject to a contiguous PyArrayObject of the
-   * specified type.  If the input object is not a contiguous
-   * PyArrayObject, a new one will be created and the new object flag
-   * will be set.
-   */
-  PyArrayObject* obj_to_array_contiguous_allow_conversion(PyObject* input,
-                                                          int       typecode,
-                                                          int*      is_new_object)
-  {
-    int is_new1 = 0;
-    int is_new2 = 0;
-    PyArrayObject* ary2;
-    PyArrayObject* ary1 = obj_to_array_allow_conversion(input,
-                                                        typecode,
-                                                        &is_new1);
-    if (ary1)
-    {
-      ary2 = make_contiguous(ary1, &is_new2, 0, 0);
-      if ( is_new1 && is_new2)
-      {
-        Py_DECREF(ary1);
-      }
-      ary1 = ary2;
-    }
-    *is_new_object = is_new1 || is_new2;
-    return ary1;
-  }
-
-  /* Convert a given PyObject to a Fortran-ordered PyArrayObject of the
-   * specified type.  If the input object is not a Fortran-ordered
-   * PyArrayObject, a new one will be created and the new object flag
-   * will be set.
-   */
-  PyArrayObject* obj_to_array_fortran_allow_conversion(PyObject* input,
-                                                       int       typecode,
-                                                       int*      is_new_object)
-  {
-    int is_new1 = 0;
-    int is_new2 = 0;
-    PyArrayObject* ary2;
-    PyArrayObject* ary1 = obj_to_array_allow_conversion(input,
-                                                        typecode,
-                                                        &is_new1);
-    if (ary1)
-    {
-      ary2 = make_fortran(ary1, &is_new2);
-      if (is_new1 && is_new2)
-      {
-        Py_DECREF(ary1);
-      }
-      ary1 = ary2;
-    }
-    *is_new_object = is_new1 || is_new2;
-    return ary1;
-  }
-} /* end fragment */
-
-/**********************************************************************/
-
-%fragment("NumPy_Array_Requirements",
-          "header",
-          fragment="NumPy_Backward_Compatibility",
-          fragment="NumPy_Macros")
-{
-  /* Test whether a python object is contiguous.  If array is
-   * contiguous, return 1.  Otherwise, set the python error string and
-   * return 0.
-   */
-  int require_contiguous(PyArrayObject* ary)
-  {
-    int contiguous = 1;
-    if (!array_is_contiguous(ary))
-    {
-      PyErr_SetString(PyExc_TypeError,
-                      "Array must be contiguous.  A non-contiguous array was given");
-      contiguous = 0;
-    }
-    return contiguous;
-  }
-
-  /* Test whether a python object is (C_ or F_) contiguous.  If array is
-   * contiguous, return 1.  Otherwise, set the python error string and
-   * return 0.
-   */
-  int require_c_or_f_contiguous(PyArrayObject* ary)
-  {
-    int contiguous = 1;
-    if (!(array_is_contiguous(ary) || array_is_fortran(ary)))
-    {
-      PyErr_SetString(PyExc_TypeError,
-                      "Array must be contiguous (C_ or F_).  A non-contiguous array was given");
-      contiguous = 0;
-    }
-    return contiguous;
-  }
-
-  /* Require that a numpy array is not byte-swapped.  If the array is
-   * not byte-swapped, return 1.  Otherwise, set the python error string
-   * and return 0.
-   */
-  int require_native(PyArrayObject* ary)
-  {
-    int native = 1;
-    if (!array_is_native(ary))
-    {
-      PyErr_SetString(PyExc_TypeError,
-                      "Array must have native byteorder.  "
-                      "A byte-swapped array was given");
-      native = 0;
-    }
-    return native;
-  }
-
-  /* Require the given PyArrayObject to have a specified number of
-   * dimensions.  If the array has the specified number of dimensions,
-   * return 1.  Otherwise, set the python error string and return 0.
-   */
-  int require_dimensions(PyArrayObject* ary,
-                         int            exact_dimensions)
-  {
-    int success = 1;
-    if (array_numdims(ary) != exact_dimensions)
-    {
-      PyErr_Format(PyExc_TypeError,
-                   "Array must have %d dimensions.  Given array has %d dimensions",
-                   exact_dimensions,
-                   array_numdims(ary));
-      success = 0;
-    }
-    return success;
-  }
-
-  /* Require the given PyArrayObject to have one of a list of specified
-   * number of dimensions.  If the array has one of the specified number
-   * of dimensions, return 1.  Otherwise, set the python error string
-   * and return 0.
-   */
-  int require_dimensions_n(PyArrayObject* ary,
-                           int*           exact_dimensions,
-                           int            n)
-  {
-    int success = 0;
-    int i;
-    char dims_str[255] = "";
-    char s[255];
-    for (i = 0; i < n && !success; i++)
-    {
-      if (array_numdims(ary) == exact_dimensions[i])
-      {
-        success = 1;
-      }
-    }
-    if (!success)
-    {
-      for (i = 0; i < n-1; i++)
-      {
-        sprintf(s, "%d, ", exact_dimensions[i]);
-        strcat(dims_str,s);
-      }
-      sprintf(s, " or %d", exact_dimensions[n-1]);
-      strcat(dims_str,s);
-      PyErr_Format(PyExc_TypeError,
-                   "Array must have %s dimensions.  Given array has %d dimensions",
-                   dims_str,
-                   array_numdims(ary));
-    }
-    return success;
-  }
-
-  /* Require the given PyArrayObject to have a specified shape.  If the
-   * array has the specified shape, return 1.  Otherwise, set the python
-   * error string and return 0.
-   */
-  int require_size(PyArrayObject* ary,
-                   npy_intp*      size,
-                   int            n)
-  {
-    int i;
-    int success = 1;
-    int len;
-    char desired_dims[255] = "[";
-    char s[255];
-    char actual_dims[255] = "[";
-    for(i=0; i < n;i++)
-    {
-      if (size[i] != -1 &&  size[i] != array_size(ary,i))
-      {
-        success = 0;
-      }
-    }
-    if (!success)
-    {
-      for (i = 0; i < n; i++)
-      {
-        if (size[i] == -1)
-        {
-          sprintf(s, "*,");
-        }
-        else
-        {
-          sprintf(s, "%ld,", (long int)size[i]);
-        }
-        strcat(desired_dims,s);
-      }
-      len = strlen(desired_dims);
-      desired_dims[len-1] = ']';
-      for (i = 0; i < n; i++)
-      {
-        sprintf(s, "%ld,", (long int)array_size(ary,i));
-        strcat(actual_dims,s);
-      }
-      len = strlen(actual_dims);
-      actual_dims[len-1] = ']';
-      PyErr_Format(PyExc_TypeError,
-                   "Array must have shape of %s.  Given array has shape of %s",
-                   desired_dims,
-                   actual_dims);
-    }
-    return success;
-  }
-
-  /* Require the given PyArrayObject to to be Fortran ordered.  If the
-   * the PyArrayObject is already Fortran ordered, do nothing.  Else,
-   * set the Fortran ordering flag and recompute the strides.
-   */
-  int require_fortran(PyArrayObject* ary)
-  {
-    int success = 1;
-    int nd = array_numdims(ary);
-    int i;
-    npy_intp * strides = array_strides(ary);
-    if (array_is_fortran(ary)) return success;
-    /* Set the Fortran ordered flag */
-    array_enableflags(ary,NPY_ARRAY_FARRAY);
-    /* Recompute the strides */
-    strides[0] = strides[nd-1];
-    for (i=1; i < nd; ++i)
-      strides[i] = strides[i-1] * array_size(ary,i-1);
-    return success;
-  }
-}
-
-/* Combine all NumPy fragments into one for convenience */
-%fragment("NumPy_Fragments",
-          "header",
-          fragment="NumPy_Backward_Compatibility",
-          fragment="NumPy_Macros",
-          fragment="NumPy_Utilities",
-          fragment="NumPy_Object_to_Array",
-          fragment="NumPy_Array_Requirements")
-{
-}
-
-/* End John Hunter translation (with modifications by Bill Spotz)
- */
-
-/* %numpy_typemaps() macro
- *
- * This macro defines a family of 75 typemaps that allow C arguments
- * of the form
- *
- *    1. (DATA_TYPE IN_ARRAY1[ANY])
- *    2. (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1)
- *    3. (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1)
- *
- *    4. (DATA_TYPE IN_ARRAY2[ANY][ANY])
- *    5. (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- *    6. (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2)
- *    7. (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- *    8. (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
- *
- *    9. (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY])
- *   10. (DATA_TYPE* IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
- *   11. (DATA_TYPE** IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
- *   12. (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_ARRAY3)
- *   13. (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
- *   14. (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_FARRAY3)
- *
- *   15. (DATA_TYPE IN_ARRAY4[ANY][ANY][ANY][ANY])
- *   16. (DATA_TYPE* IN_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
- *   17. (DATA_TYPE** IN_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
- *   18. (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, , DIM_TYPE DIM4, DATA_TYPE* IN_ARRAY4)
- *   19. (DATA_TYPE* IN_FARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
- *   20. (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* IN_FARRAY4)
- *
- *   21. (DATA_TYPE INPLACE_ARRAY1[ANY])
- *   22. (DATA_TYPE* INPLACE_ARRAY1, DIM_TYPE DIM1)
- *   23. (DIM_TYPE DIM1, DATA_TYPE* INPLACE_ARRAY1)
- *
- *   24. (DATA_TYPE INPLACE_ARRAY2[ANY][ANY])
- *   25. (DATA_TYPE* INPLACE_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- *   26. (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_ARRAY2)
- *   27. (DATA_TYPE* INPLACE_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- *   28. (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_FARRAY2)
- *
- *   29. (DATA_TYPE INPLACE_ARRAY3[ANY][ANY][ANY])
- *   30. (DATA_TYPE* INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
- *   31. (DATA_TYPE** INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
- *   32. (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_ARRAY3)
- *   33. (DATA_TYPE* INPLACE_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
- *   34. (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_FARRAY3)
- *
- *   35. (DATA_TYPE INPLACE_ARRAY4[ANY][ANY][ANY][ANY])
- *   36. (DATA_TYPE* INPLACE_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
- *   37. (DATA_TYPE** INPLACE_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
- *   38. (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* INPLACE_ARRAY4)
- *   39. (DATA_TYPE* INPLACE_FARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
- *   40. (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* INPLACE_FARRAY4)
- *
- *   41. (DATA_TYPE ARGOUT_ARRAY1[ANY])
- *   42. (DATA_TYPE* ARGOUT_ARRAY1, DIM_TYPE DIM1)
- *   43. (DIM_TYPE DIM1, DATA_TYPE* ARGOUT_ARRAY1)
- *
- *   44. (DATA_TYPE ARGOUT_ARRAY2[ANY][ANY])
- *
- *   45. (DATA_TYPE ARGOUT_ARRAY3[ANY][ANY][ANY])
- *
- *   46. (DATA_TYPE ARGOUT_ARRAY4[ANY][ANY][ANY][ANY])
- *
- *   47. (DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1)
- *   48. (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEW_ARRAY1)
- *
- *   49. (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
- *   50. (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_ARRAY2)
- *   51. (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
- *   52. (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_FARRAY2)
- *
- *   53. (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
- *   54. (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_ARRAY3)
- *   55. (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
- *   56. (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_FARRAY3)
- *
- *   57. (DATA_TYPE** ARGOUTVIEW_ARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4)
- *   58. (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4, DATA_TYPE** ARGOUTVIEW_ARRAY4)
- *   59. (DATA_TYPE** ARGOUTVIEW_FARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4)
- *   60. (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4, DATA_TYPE** ARGOUTVIEW_FARRAY4)
- *
- *   61. (DATA_TYPE** ARGOUTVIEWM_ARRAY1, DIM_TYPE* DIM1)
- *   62. (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEWM_ARRAY1)
- *
- *   63. (DATA_TYPE** ARGOUTVIEWM_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
- *   64. (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEWM_ARRAY2)
- *   65. (DATA_TYPE** ARGOUTVIEWM_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
- *   66. (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEWM_FARRAY2)
- *
- *   67. (DATA_TYPE** ARGOUTVIEWM_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
- *   68. (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEWM_ARRAY3)
- *   69. (DATA_TYPE** ARGOUTVIEWM_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
- *   70. (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEWM_FARRAY3)
- *
- *   71. (DATA_TYPE** ARGOUTVIEWM_ARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4)
- *   72. (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4, DATA_TYPE** ARGOUTVIEWM_ARRAY4)
- *   73. (DATA_TYPE** ARGOUTVIEWM_FARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4)
- *   74. (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4, DATA_TYPE** ARGOUTVIEWM_FARRAY4)
- *
- *   75. (DATA_TYPE* INPLACE_ARRAY_FLAT, DIM_TYPE DIM_FLAT)
- *
- * where "DATA_TYPE" is any type supported by the NumPy module, and
- * "DIM_TYPE" is any int-like type suitable for specifying dimensions.
- * The difference between "ARRAY" typemaps and "FARRAY" typemaps is
- * that the "FARRAY" typemaps expect Fortran ordering of
- * multidimensional arrays.  In python, the dimensions will not need
- * to be specified (except for the "DATA_TYPE* ARGOUT_ARRAY1"
- * typemaps).  The IN_ARRAYs can be a numpy array or any sequence that
- * can be converted to a numpy array of the specified type.  The
- * INPLACE_ARRAYs must be numpy arrays of the appropriate type.  The
- * ARGOUT_ARRAYs will be returned as new numpy arrays of the
- * appropriate type.
- *
- * These typemaps can be applied to existing functions using the
- * %apply directive.  For example:
- *
- *     %apply (double* IN_ARRAY1, int DIM1) {(double* series, int length)};
- *     double prod(double* series, int length);
- *
- *     %apply (int DIM1, int DIM2, double* INPLACE_ARRAY2)
- *           {(int rows, int cols, double* matrix        )};
- *     void floor(int rows, int cols, double* matrix, double f);
- *
- *     %apply (double IN_ARRAY3[ANY][ANY][ANY])
- *           {(double tensor[2][2][2]         )};
- *     %apply (double ARGOUT_ARRAY3[ANY][ANY][ANY])
- *           {(double low[2][2][2]                )};
- *     %apply (double ARGOUT_ARRAY3[ANY][ANY][ANY])
- *           {(double upp[2][2][2]                )};
- *     void luSplit(double tensor[2][2][2],
- *                  double low[2][2][2],
- *                  double upp[2][2][2]    );
- *
- * or directly with
- *
- *     double prod(double* IN_ARRAY1, int DIM1);
- *
- *     void floor(int DIM1, int DIM2, double* INPLACE_ARRAY2, double f);
- *
- *     void luSplit(double IN_ARRAY3[ANY][ANY][ANY],
- *                  double ARGOUT_ARRAY3[ANY][ANY][ANY],
- *                  double ARGOUT_ARRAY3[ANY][ANY][ANY]);
- */
-
-%define %numpy_typemaps(DATA_TYPE, DATA_TYPECODE, DIM_TYPE)
-
-/************************/
-/* Input Array Typemaps */
-/************************/
-
-/* Typemap suite for (DATA_TYPE IN_ARRAY1[ANY])
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE IN_ARRAY1[ANY])
-{
-  $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE IN_ARRAY1[ANY])
-  (PyArrayObject* array=NULL, int is_new_object=0)
-{
-  npy_intp size[1] = { $1_dim0 };
-  array = obj_to_array_contiguous_allow_conversion($input,
-                                                   DATA_TYPECODE,
-                                                   &is_new_object);
-  if (!array || !require_dimensions(array, 1) ||
-      !require_size(array, size, 1)) SWIG_fail;
-  $1 = ($1_ltype) array_data(array);
-}
-%typemap(freearg)
-  (DATA_TYPE IN_ARRAY1[ANY])
-{
-  if (is_new_object$argnum && array$argnum)
-    { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1)
-{
-  $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1)
-  (PyArrayObject* array=NULL, int is_new_object=0)
-{
-  npy_intp size[1] = { -1 };
-  array = obj_to_array_contiguous_allow_conversion($input,
-                                                   DATA_TYPECODE,
-                                                   &is_new_object);
-  if (!array || !require_dimensions(array, 1) ||
-      !require_size(array, size, 1)) SWIG_fail;
-  $1 = (DATA_TYPE*) array_data(array);
-  $2 = (DIM_TYPE) array_size(array,0);
-}
-%typemap(freearg)
-  (DATA_TYPE* IN_ARRAY1, DIM_TYPE DIM1)
-{
-  if (is_new_object$argnum && array$argnum)
-    { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1)
-{
-  $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1)
-  (PyArrayObject* array=NULL, int is_new_object=0)
-{
-  npy_intp size[1] = {-1};
-  array = obj_to_array_contiguous_allow_conversion($input,
-                                                   DATA_TYPECODE,
-                                                   &is_new_object);
-  if (!array || !require_dimensions(array, 1) ||
-      !require_size(array, size, 1)) SWIG_fail;
-  $1 = (DIM_TYPE) array_size(array,0);
-  $2 = (DATA_TYPE*) array_data(array);
-}
-%typemap(freearg)
-  (DIM_TYPE DIM1, DATA_TYPE* IN_ARRAY1)
-{
-  if (is_new_object$argnum && array$argnum)
-    { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE IN_ARRAY2[ANY][ANY])
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE IN_ARRAY2[ANY][ANY])
-{
-  $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE IN_ARRAY2[ANY][ANY])
-  (PyArrayObject* array=NULL, int is_new_object=0)
-{
-  npy_intp size[2] = { $1_dim0, $1_dim1 };
-  array = obj_to_array_contiguous_allow_conversion($input,
-                                                   DATA_TYPECODE,
-                                                   &is_new_object);
-  if (!array || !require_dimensions(array, 2) ||
-      !require_size(array, size, 2)) SWIG_fail;
-  $1 = ($1_ltype) array_data(array);
-}
-%typemap(freearg)
-  (DATA_TYPE IN_ARRAY2[ANY][ANY])
-{
-  if (is_new_object$argnum && array$argnum)
-    { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-{
-  $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-  (PyArrayObject* array=NULL, int is_new_object=0)
-{
-  npy_intp size[2] = { -1, -1 };
-  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
-                                                   &is_new_object);
-  if (!array || !require_dimensions(array, 2) ||
-      !require_size(array, size, 2)) SWIG_fail;
-  $1 = (DATA_TYPE*) array_data(array);
-  $2 = (DIM_TYPE) array_size(array,0);
-  $3 = (DIM_TYPE) array_size(array,1);
-}
-%typemap(freearg)
-  (DATA_TYPE* IN_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-{
-  if (is_new_object$argnum && array$argnum)
-    { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2)
-{
-  $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2)
-  (PyArrayObject* array=NULL, int is_new_object=0)
-{
-  npy_intp size[2] = { -1, -1 };
-  array = obj_to_array_contiguous_allow_conversion($input,
-                                                   DATA_TYPECODE,
-                                                   &is_new_object);
-  if (!array || !require_dimensions(array, 2) ||
-      !require_size(array, size, 2)) SWIG_fail;
-  $1 = (DIM_TYPE) array_size(array,0);
-  $2 = (DIM_TYPE) array_size(array,1);
-  $3 = (DATA_TYPE*) array_data(array);
-}
-%typemap(freearg)
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_ARRAY2)
-{
-  if (is_new_object$argnum && array$argnum)
-    { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-{
-  $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-  (PyArrayObject* array=NULL, int is_new_object=0)
-{
-  npy_intp size[2] = { -1, -1 };
-  array = obj_to_array_fortran_allow_conversion($input,
-                                                DATA_TYPECODE,
-                                                &is_new_object);
-  if (!array || !require_dimensions(array, 2) ||
-      !require_size(array, size, 2) || !require_fortran(array)) SWIG_fail;
-  $1 = (DATA_TYPE*) array_data(array);
-  $2 = (DIM_TYPE) array_size(array,0);
-  $3 = (DIM_TYPE) array_size(array,1);
-}
-%typemap(freearg)
-  (DATA_TYPE* IN_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-{
-  if (is_new_object$argnum && array$argnum)
-    { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
-{
-  $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
-  (PyArrayObject* array=NULL, int is_new_object=0)
-{
-  npy_intp size[2] = { -1, -1 };
-  array = obj_to_array_fortran_allow_conversion($input,
-                                                   DATA_TYPECODE,
-                                                   &is_new_object);
-  if (!array || !require_dimensions(array, 2) ||
-      !require_size(array, size, 2) || !require_fortran(array)) SWIG_fail;
-  $1 = (DIM_TYPE) array_size(array,0);
-  $2 = (DIM_TYPE) array_size(array,1);
-  $3 = (DATA_TYPE*) array_data(array);
-}
-%typemap(freearg)
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* IN_FARRAY2)
-{
-  if (is_new_object$argnum && array$argnum)
-    { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY])
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY])
-{
-  $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY])
-  (PyArrayObject* array=NULL, int is_new_object=0)
-{
-  npy_intp size[3] = { $1_dim0, $1_dim1, $1_dim2 };
-  array = obj_to_array_contiguous_allow_conversion($input,
-                                                   DATA_TYPECODE,
-                                                   &is_new_object);
-  if (!array || !require_dimensions(array, 3) ||
-      !require_size(array, size, 3)) SWIG_fail;
-  $1 = ($1_ltype) array_data(array);
-}
-%typemap(freearg)
-  (DATA_TYPE IN_ARRAY3[ANY][ANY][ANY])
-{
-  if (is_new_object$argnum && array$argnum)
-    { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE* IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2,
- *                    DIM_TYPE DIM3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE* IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-{
-  $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE* IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-  (PyArrayObject* array=NULL, int is_new_object=0)
-{
-  npy_intp size[3] = { -1, -1, -1 };
-  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
-                                                   &is_new_object);
-  if (!array || !require_dimensions(array, 3) ||
-      !require_size(array, size, 3)) SWIG_fail;
-  $1 = (DATA_TYPE*) array_data(array);
-  $2 = (DIM_TYPE) array_size(array,0);
-  $3 = (DIM_TYPE) array_size(array,1);
-  $4 = (DIM_TYPE) array_size(array,2);
-}
-%typemap(freearg)
-  (DATA_TYPE* IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-{
-  if (is_new_object$argnum && array$argnum)
-    { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE** IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2,
- *                    DIM_TYPE DIM3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE** IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-{
-  /* for now, only concerned with lists */
-  $1 = PySequence_Check($input);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE** IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-  (DATA_TYPE** array=NULL, PyArrayObject** object_array=NULL, int* is_new_object_array=NULL)
-{
-  npy_intp size[2] = { -1, -1 };
-  PyArrayObject* temp_array;
-  Py_ssize_t i;
-  int is_new_object;
-
-  /* length of the list */
-  $2 = PyList_Size($input);
-
-  /* the arrays */
-  array = (DATA_TYPE **)malloc($2*sizeof(DATA_TYPE *));
-  object_array = (PyArrayObject **)calloc($2,sizeof(PyArrayObject *));
-  is_new_object_array = (int *)calloc($2,sizeof(int));
-
-  if (array == NULL || object_array == NULL || is_new_object_array == NULL)
-  {
-    SWIG_fail;
-  }
-
-  for (i=0; i<$2; i++)
-  {
-    temp_array = obj_to_array_contiguous_allow_conversion(PySequence_GetItem($input,i), DATA_TYPECODE, &is_new_object);
-
-    /* the new array must be stored so that it can be destroyed in freearg */
-    object_array[i] = temp_array;
-    is_new_object_array[i] = is_new_object;
-
-    if (!temp_array || !require_dimensions(temp_array, 2)) SWIG_fail;
-
-    /* store the size of the first array in the list, then use that for comparison. */
-    if (i == 0)
-    {
-      size[0] = array_size(temp_array,0);
-      size[1] = array_size(temp_array,1);
-    }
-
-    if (!require_size(temp_array, size, 2)) SWIG_fail;
-
-    array[i] = (DATA_TYPE*) array_data(temp_array);
-  }
-
-  $1 = (DATA_TYPE**) array;
-  $3 = (DIM_TYPE) size[0];
-  $4 = (DIM_TYPE) size[1];
-}
-%typemap(freearg)
-  (DATA_TYPE** IN_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-{
-  Py_ssize_t i;
-
-  if (array$argnum!=NULL) free(array$argnum);
-
-  /*freeing the individual arrays if needed */
-  if (object_array$argnum!=NULL)
-  {
-    if (is_new_object_array$argnum!=NULL)
-    {
-      for (i=0; i<$2; i++)
-      {
-        if (object_array$argnum[i] != NULL && is_new_object_array$argnum[i])
-        { Py_DECREF(object_array$argnum[i]); }
-      }
-      free(is_new_object_array$argnum);
-    }
-    free(object_array$argnum);
-  }
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3,
- *                    DATA_TYPE* IN_ARRAY3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_ARRAY3)
-{
-  $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_ARRAY3)
-  (PyArrayObject* array=NULL, int is_new_object=0)
-{
-  npy_intp size[3] = { -1, -1, -1 };
-  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
-                                                   &is_new_object);
-  if (!array || !require_dimensions(array, 3) ||
-      !require_size(array, size, 3)) SWIG_fail;
-  $1 = (DIM_TYPE) array_size(array,0);
-  $2 = (DIM_TYPE) array_size(array,1);
-  $3 = (DIM_TYPE) array_size(array,2);
-  $4 = (DATA_TYPE*) array_data(array);
-}
-%typemap(freearg)
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_ARRAY3)
-{
-  if (is_new_object$argnum && array$argnum)
-    { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2,
- *                    DIM_TYPE DIM3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-{
-  $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-  (PyArrayObject* array=NULL, int is_new_object=0)
-{
-  npy_intp size[3] = { -1, -1, -1 };
-  array = obj_to_array_fortran_allow_conversion($input, DATA_TYPECODE,
-                                                &is_new_object);
-  if (!array || !require_dimensions(array, 3) ||
-      !require_size(array, size, 3) | !require_fortran(array)) SWIG_fail;
-  $1 = (DATA_TYPE*) array_data(array);
-  $2 = (DIM_TYPE) array_size(array,0);
-  $3 = (DIM_TYPE) array_size(array,1);
-  $4 = (DIM_TYPE) array_size(array,2);
-}
-%typemap(freearg)
-  (DATA_TYPE* IN_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-{
-  if (is_new_object$argnum && array$argnum)
-    { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3,
- *                    DATA_TYPE* IN_FARRAY3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_FARRAY3)
-{
-  $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_FARRAY3)
-  (PyArrayObject* array=NULL, int is_new_object=0)
-{
-  npy_intp size[3] = { -1, -1, -1 };
-  array = obj_to_array_fortran_allow_conversion($input,
-                                                   DATA_TYPECODE,
-                                                   &is_new_object);
-  if (!array || !require_dimensions(array, 3) ||
-      !require_size(array, size, 3) || !require_fortran(array)) SWIG_fail;
-  $1 = (DIM_TYPE) array_size(array,0);
-  $2 = (DIM_TYPE) array_size(array,1);
-  $3 = (DIM_TYPE) array_size(array,2);
-  $4 = (DATA_TYPE*) array_data(array);
-}
-%typemap(freearg)
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* IN_FARRAY3)
-{
-  if (is_new_object$argnum && array$argnum)
-    { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE IN_ARRAY4[ANY][ANY][ANY][ANY])
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE IN_ARRAY4[ANY][ANY][ANY][ANY])
-{
-  $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE IN_ARRAY4[ANY][ANY][ANY][ANY])
-  (PyArrayObject* array=NULL, int is_new_object=0)
-{
-  npy_intp size[4] = { $1_dim0, $1_dim1, $1_dim2 , $1_dim3};
-  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
-                                                   &is_new_object);
-  if (!array || !require_dimensions(array, 4) ||
-      !require_size(array, size, 4)) SWIG_fail;
-  $1 = ($1_ltype) array_data(array);
-}
-%typemap(freearg)
-  (DATA_TYPE IN_ARRAY4[ANY][ANY][ANY][ANY])
-{
-  if (is_new_object$argnum && array$argnum)
-    { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE* IN_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2,
- *                    DIM_TYPE DIM3, DIM_TYPE DIM4)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE* IN_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-{
-  $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE* IN_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-  (PyArrayObject* array=NULL, int is_new_object=0)
-{
-  npy_intp size[4] = { -1, -1, -1, -1 };
-  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
-                                                   &is_new_object);
-  if (!array || !require_dimensions(array, 4) ||
-      !require_size(array, size, 4)) SWIG_fail;
-  $1 = (DATA_TYPE*) array_data(array);
-  $2 = (DIM_TYPE) array_size(array,0);
-  $3 = (DIM_TYPE) array_size(array,1);
-  $4 = (DIM_TYPE) array_size(array,2);
-  $5 = (DIM_TYPE) array_size(array,3);
-}
-%typemap(freearg)
-  (DATA_TYPE* IN_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-{
-  if (is_new_object$argnum && array$argnum)
-    { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE** IN_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2,
- *                    DIM_TYPE DIM3, DIM_TYPE DIM4)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE** IN_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-{
-  /* for now, only concerned with lists */
-  $1 = PySequence_Check($input);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE** IN_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-  (DATA_TYPE** array=NULL, PyArrayObject** object_array=NULL, int* is_new_object_array=NULL)
-{
-  npy_intp size[3] = { -1, -1, -1 };
-  PyArrayObject* temp_array;
-  Py_ssize_t i;
-  int is_new_object;
-
-  /* length of the list */
-  $2 = PyList_Size($input);
-
-  /* the arrays */
-  array = (DATA_TYPE **)malloc($2*sizeof(DATA_TYPE *));
-  object_array = (PyArrayObject **)calloc($2,sizeof(PyArrayObject *));
-  is_new_object_array = (int *)calloc($2,sizeof(int));
-
-  if (array == NULL || object_array == NULL || is_new_object_array == NULL)
-  {
-    SWIG_fail;
-  }
-
-  for (i=0; i<$2; i++)
-  {
-    temp_array = obj_to_array_contiguous_allow_conversion(PySequence_GetItem($input,i), DATA_TYPECODE, &is_new_object);
-
-    /* the new array must be stored so that it can be destroyed in freearg */
-    object_array[i] = temp_array;
-    is_new_object_array[i] = is_new_object;
-
-    if (!temp_array || !require_dimensions(temp_array, 3)) SWIG_fail;
-
-    /* store the size of the first array in the list, then use that for comparison. */
-    if (i == 0)
-    {
-      size[0] = array_size(temp_array,0);
-      size[1] = array_size(temp_array,1);
-      size[2] = array_size(temp_array,2);
-    }
-
-    if (!require_size(temp_array, size, 3)) SWIG_fail;
-
-    array[i] = (DATA_TYPE*) array_data(temp_array);
-  }
-
-  $1 = (DATA_TYPE**) array;
-  $3 = (DIM_TYPE) size[0];
-  $4 = (DIM_TYPE) size[1];
-  $5 = (DIM_TYPE) size[2];
-}
-%typemap(freearg)
-  (DATA_TYPE** IN_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-{
-  Py_ssize_t i;
-
-  if (array$argnum!=NULL) free(array$argnum);
-
-  /*freeing the individual arrays if needed */
-  if (object_array$argnum!=NULL)
-  {
-    if (is_new_object_array$argnum!=NULL)
-    {
-      for (i=0; i<$2; i++)
-      {
-        if (object_array$argnum[i] != NULL && is_new_object_array$argnum[i])
-        { Py_DECREF(object_array$argnum[i]); }
-      }
-      free(is_new_object_array$argnum);
-    }
-    free(object_array$argnum);
-  }
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4,
- *                    DATA_TYPE* IN_ARRAY4)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* IN_ARRAY4)
-{
-  $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* IN_ARRAY4)
-  (PyArrayObject* array=NULL, int is_new_object=0)
-{
-  npy_intp size[4] = { -1, -1, -1 , -1};
-  array = obj_to_array_contiguous_allow_conversion($input, DATA_TYPECODE,
-                                                   &is_new_object);
-  if (!array || !require_dimensions(array, 4) ||
-      !require_size(array, size, 4)) SWIG_fail;
-  $1 = (DIM_TYPE) array_size(array,0);
-  $2 = (DIM_TYPE) array_size(array,1);
-  $3 = (DIM_TYPE) array_size(array,2);
-  $4 = (DIM_TYPE) array_size(array,3);
-  $5 = (DATA_TYPE*) array_data(array);
-}
-%typemap(freearg)
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* IN_ARRAY4)
-{
-  if (is_new_object$argnum && array$argnum)
-    { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DATA_TYPE* IN_FARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2,
- *                    DIM_TYPE DIM3, DIM_TYPE DIM4)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE* IN_FARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-{
-  $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE* IN_FARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-  (PyArrayObject* array=NULL, int is_new_object=0)
-{
-  npy_intp size[4] = { -1, -1, -1, -1 };
-  array = obj_to_array_fortran_allow_conversion($input, DATA_TYPECODE,
-                                                &is_new_object);
-  if (!array || !require_dimensions(array, 4) ||
-      !require_size(array, size, 4) | !require_fortran(array)) SWIG_fail;
-  $1 = (DATA_TYPE*) array_data(array);
-  $2 = (DIM_TYPE) array_size(array,0);
-  $3 = (DIM_TYPE) array_size(array,1);
-  $4 = (DIM_TYPE) array_size(array,2);
-  $5 = (DIM_TYPE) array_size(array,3);
-}
-%typemap(freearg)
-  (DATA_TYPE* IN_FARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-{
-  if (is_new_object$argnum && array$argnum)
-    { Py_DECREF(array$argnum); }
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4,
- *                    DATA_TYPE* IN_FARRAY4)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* IN_FARRAY4)
-{
-  $1 = is_array($input) || PySequence_Check($input);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* IN_FARRAY4)
-  (PyArrayObject* array=NULL, int is_new_object=0)
-{
-  npy_intp size[4] = { -1, -1, -1 , -1 };
-  array = obj_to_array_fortran_allow_conversion($input, DATA_TYPECODE,
-                                                   &is_new_object);
-  if (!array || !require_dimensions(array, 4) ||
-      !require_size(array, size, 4) || !require_fortran(array)) SWIG_fail;
-  $1 = (DIM_TYPE) array_size(array,0);
-  $2 = (DIM_TYPE) array_size(array,1);
-  $3 = (DIM_TYPE) array_size(array,2);
-  $4 = (DIM_TYPE) array_size(array,3);
-  $5 = (DATA_TYPE*) array_data(array);
-}
-%typemap(freearg)
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* IN_FARRAY4)
-{
-  if (is_new_object$argnum && array$argnum)
-    { Py_DECREF(array$argnum); }
-}
-
-/***************************/
-/* In-Place Array Typemaps */
-/***************************/
-
-/* Typemap suite for (DATA_TYPE INPLACE_ARRAY1[ANY])
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE INPLACE_ARRAY1[ANY])
-{
-  $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
-                                                 DATA_TYPECODE);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE INPLACE_ARRAY1[ANY])
-  (PyArrayObject* array=NULL)
-{
-  npy_intp size[1] = { $1_dim0 };
-  array = obj_to_array_no_conversion($input, DATA_TYPECODE);
-  if (!array || !require_dimensions(array,1) || !require_size(array, size, 1) ||
-      !require_contiguous(array) || !require_native(array)) SWIG_fail;
-  $1 = ($1_ltype) array_data(array);
-}
-
-/* Typemap suite for (DATA_TYPE* INPLACE_ARRAY1, DIM_TYPE DIM1)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE* INPLACE_ARRAY1, DIM_TYPE DIM1)
-{
-  $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
-                                                 DATA_TYPECODE);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE* INPLACE_ARRAY1, DIM_TYPE DIM1)
-  (PyArrayObject* array=NULL, int i=1)
-{
-  array = obj_to_array_no_conversion($input, DATA_TYPECODE);
-  if (!array || !require_dimensions(array,1) || !require_contiguous(array)
-      || !require_native(array)) SWIG_fail;
-  $1 = (DATA_TYPE*) array_data(array);
-  $2 = 1;
-  for (i=0; i < array_numdims(array); ++i) $2 *= array_size(array,i);
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DATA_TYPE* INPLACE_ARRAY1)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DIM_TYPE DIM1, DATA_TYPE* INPLACE_ARRAY1)
-{
-  $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
-                                                 DATA_TYPECODE);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DIM_TYPE DIM1, DATA_TYPE* INPLACE_ARRAY1)
-  (PyArrayObject* array=NULL, int i=0)
-{
-  array = obj_to_array_no_conversion($input, DATA_TYPECODE);
-  if (!array || !require_dimensions(array,1) || !require_contiguous(array)
-      || !require_native(array)) SWIG_fail;
-  $1 = 1;
-  for (i=0; i < array_numdims(array); ++i) $1 *= array_size(array,i);
-  $2 = (DATA_TYPE*) array_data(array);
-}
-
-/* Typemap suite for (DATA_TYPE INPLACE_ARRAY2[ANY][ANY])
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE INPLACE_ARRAY2[ANY][ANY])
-{
-  $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
-                                                 DATA_TYPECODE);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE INPLACE_ARRAY2[ANY][ANY])
-  (PyArrayObject* array=NULL)
-{
-  npy_intp size[2] = { $1_dim0, $1_dim1 };
-  array = obj_to_array_no_conversion($input, DATA_TYPECODE);
-  if (!array || !require_dimensions(array,2) || !require_size(array, size, 2) ||
-      !require_contiguous(array) || !require_native(array)) SWIG_fail;
-  $1 = ($1_ltype) array_data(array);
-}
-
-/* Typemap suite for (DATA_TYPE* INPLACE_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE* INPLACE_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-{
-  $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
-                                                 DATA_TYPECODE);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE* INPLACE_ARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-  (PyArrayObject* array=NULL)
-{
-  array = obj_to_array_no_conversion($input, DATA_TYPECODE);
-  if (!array || !require_dimensions(array,2) || !require_contiguous(array)
-      || !require_native(array)) SWIG_fail;
-  $1 = (DATA_TYPE*) array_data(array);
-  $2 = (DIM_TYPE) array_size(array,0);
-  $3 = (DIM_TYPE) array_size(array,1);
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_ARRAY2)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_ARRAY2)
-{
-  $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
-                                                 DATA_TYPECODE);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_ARRAY2)
-  (PyArrayObject* array=NULL)
-{
-  array = obj_to_array_no_conversion($input, DATA_TYPECODE);
-  if (!array || !require_dimensions(array,2) || !require_contiguous(array) ||
-      !require_native(array)) SWIG_fail;
-  $1 = (DIM_TYPE) array_size(array,0);
-  $2 = (DIM_TYPE) array_size(array,1);
-  $3 = (DATA_TYPE*) array_data(array);
-}
-
-/* Typemap suite for (DATA_TYPE* INPLACE_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE* INPLACE_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-{
-  $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
-                                                 DATA_TYPECODE);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE* INPLACE_FARRAY2, DIM_TYPE DIM1, DIM_TYPE DIM2)
-  (PyArrayObject* array=NULL)
-{
-  array = obj_to_array_no_conversion($input, DATA_TYPECODE);
-  if (!array || !require_dimensions(array,2) || !require_contiguous(array)
-      || !require_native(array) || !require_fortran(array)) SWIG_fail;
-  $1 = (DATA_TYPE*) array_data(array);
-  $2 = (DIM_TYPE) array_size(array,0);
-  $3 = (DIM_TYPE) array_size(array,1);
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_FARRAY2)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_FARRAY2)
-{
-  $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
-                                                 DATA_TYPECODE);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DATA_TYPE* INPLACE_FARRAY2)
-  (PyArrayObject* array=NULL)
-{
-  array = obj_to_array_no_conversion($input, DATA_TYPECODE);
-  if (!array || !require_dimensions(array,2) || !require_contiguous(array) ||
-      !require_native(array) || !require_fortran(array)) SWIG_fail;
-  $1 = (DIM_TYPE) array_size(array,0);
-  $2 = (DIM_TYPE) array_size(array,1);
-  $3 = (DATA_TYPE*) array_data(array);
-}
-
-/* Typemap suite for (DATA_TYPE INPLACE_ARRAY3[ANY][ANY][ANY])
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE INPLACE_ARRAY3[ANY][ANY][ANY])
-{
-  $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
-                                                 DATA_TYPECODE);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE INPLACE_ARRAY3[ANY][ANY][ANY])
-  (PyArrayObject* array=NULL)
-{
-  npy_intp size[3] = { $1_dim0, $1_dim1, $1_dim2 };
-  array = obj_to_array_no_conversion($input, DATA_TYPECODE);
-  if (!array || !require_dimensions(array,3) || !require_size(array, size, 3) ||
-      !require_contiguous(array) || !require_native(array)) SWIG_fail;
-  $1 = ($1_ltype) array_data(array);
-}
-
-/* Typemap suite for (DATA_TYPE* INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2,
- *                    DIM_TYPE DIM3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE* INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-{
-  $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
-                                                 DATA_TYPECODE);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE* INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-  (PyArrayObject* array=NULL)
-{
-  array = obj_to_array_no_conversion($input, DATA_TYPECODE);
-  if (!array || !require_dimensions(array,3) || !require_contiguous(array) ||
-      !require_native(array)) SWIG_fail;
-  $1 = (DATA_TYPE*) array_data(array);
-  $2 = (DIM_TYPE) array_size(array,0);
-  $3 = (DIM_TYPE) array_size(array,1);
-  $4 = (DIM_TYPE) array_size(array,2);
-}
-
-/* Typemap suite for (DATA_TYPE** INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2,
- *                    DIM_TYPE DIM3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE** INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-{
-  $1 = PySequence_Check($input);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE** INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-  (DATA_TYPE** array=NULL, PyArrayObject** object_array=NULL)
-{
-  npy_intp size[2] = { -1, -1 };
-  PyArrayObject* temp_array;
-  Py_ssize_t i;
-
-  /* length of the list */
-  $2 = PyList_Size($input);
-
-  /* the arrays */
-  array = (DATA_TYPE **)malloc($2*sizeof(DATA_TYPE *));
-  object_array = (PyArrayObject **)calloc($2,sizeof(PyArrayObject *));
-
-  if (array == NULL || object_array == NULL)
-  {
-    SWIG_fail;
-  }
-
-  for (i=0; i<$2; i++)
-  {
-    temp_array = obj_to_array_no_conversion(PySequence_GetItem($input,i), DATA_TYPECODE);
-
-    /* the new array must be stored so that it can be destroyed in freearg */
-    object_array[i] = temp_array;
-
-    if ( !temp_array || !require_dimensions(temp_array, 2) ||
-      !require_contiguous(temp_array) ||
-      !require_native(temp_array) ||
-      !PyArray_EquivTypenums(array_type(temp_array), DATA_TYPECODE)
-    ) SWIG_fail;
-
-    /* store the size of the first array in the list, then use that for comparison. */
-    if (i == 0)
-    {
-      size[0] = array_size(temp_array,0);
-      size[1] = array_size(temp_array,1);
-    }
-
-    if (!require_size(temp_array, size, 2)) SWIG_fail;
-
-    array[i] = (DATA_TYPE*) array_data(temp_array);
-  }
-
-  $1 = (DATA_TYPE**) array;
-  $3 = (DIM_TYPE) size[0];
-  $4 = (DIM_TYPE) size[1];
-}
-%typemap(freearg)
-  (DATA_TYPE** INPLACE_ARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-{
-  if (array$argnum!=NULL) free(array$argnum);
-  if (object_array$argnum!=NULL) free(object_array$argnum);
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3,
- *                    DATA_TYPE* INPLACE_ARRAY3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_ARRAY3)
-{
-  $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
-                                                 DATA_TYPECODE);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_ARRAY3)
-  (PyArrayObject* array=NULL)
-{
-  array = obj_to_array_no_conversion($input, DATA_TYPECODE);
-  if (!array || !require_dimensions(array,3) || !require_contiguous(array)
-      || !require_native(array)) SWIG_fail;
-  $1 = (DIM_TYPE) array_size(array,0);
-  $2 = (DIM_TYPE) array_size(array,1);
-  $3 = (DIM_TYPE) array_size(array,2);
-  $4 = (DATA_TYPE*) array_data(array);
-}
-
-/* Typemap suite for (DATA_TYPE* INPLACE_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2,
- *                    DIM_TYPE DIM3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE* INPLACE_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-{
-  $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
-                                                 DATA_TYPECODE);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE* INPLACE_FARRAY3, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3)
-  (PyArrayObject* array=NULL)
-{
-  array = obj_to_array_no_conversion($input, DATA_TYPECODE);
-  if (!array || !require_dimensions(array,3) || !require_contiguous(array) ||
-      !require_native(array) || !require_fortran(array)) SWIG_fail;
-  $1 = (DATA_TYPE*) array_data(array);
-  $2 = (DIM_TYPE) array_size(array,0);
-  $3 = (DIM_TYPE) array_size(array,1);
-  $4 = (DIM_TYPE) array_size(array,2);
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3,
- *                    DATA_TYPE* INPLACE_FARRAY3)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_FARRAY3)
-{
-  $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
-                                                 DATA_TYPECODE);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DATA_TYPE* INPLACE_FARRAY3)
-  (PyArrayObject* array=NULL)
-{
-  array = obj_to_array_no_conversion($input, DATA_TYPECODE);
-  if (!array || !require_dimensions(array,3) || !require_contiguous(array)
-      || !require_native(array) || !require_fortran(array)) SWIG_fail;
-  $1 = (DIM_TYPE) array_size(array,0);
-  $2 = (DIM_TYPE) array_size(array,1);
-  $3 = (DIM_TYPE) array_size(array,2);
-  $4 = (DATA_TYPE*) array_data(array);
-}
-
-/* Typemap suite for (DATA_TYPE INPLACE_ARRAY4[ANY][ANY][ANY][ANY])
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE INPLACE_ARRAY4[ANY][ANY][ANY][ANY])
-{
-  $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
-                                                 DATA_TYPECODE);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE INPLACE_ARRAY4[ANY][ANY][ANY][ANY])
-  (PyArrayObject* array=NULL)
-{
-  npy_intp size[4] = { $1_dim0, $1_dim1, $1_dim2 , $1_dim3 };
-  array = obj_to_array_no_conversion($input, DATA_TYPECODE);
-  if (!array || !require_dimensions(array,4) || !require_size(array, size, 4) ||
-      !require_contiguous(array) || !require_native(array)) SWIG_fail;
-  $1 = ($1_ltype) array_data(array);
-}
-
-/* Typemap suite for (DATA_TYPE* INPLACE_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2,
- *                    DIM_TYPE DIM3, DIM_TYPE DIM4)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE* INPLACE_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-{
-  $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
-                                                 DATA_TYPECODE);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE* INPLACE_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-  (PyArrayObject* array=NULL)
-{
-  array = obj_to_array_no_conversion($input, DATA_TYPECODE);
-  if (!array || !require_dimensions(array,4) || !require_contiguous(array) ||
-      !require_native(array)) SWIG_fail;
-  $1 = (DATA_TYPE*) array_data(array);
-  $2 = (DIM_TYPE) array_size(array,0);
-  $3 = (DIM_TYPE) array_size(array,1);
-  $4 = (DIM_TYPE) array_size(array,2);
-  $5 = (DIM_TYPE) array_size(array,3);
-}
-
-/* Typemap suite for (DATA_TYPE** INPLACE_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2,
- *                    DIM_TYPE DIM3, DIM_TYPE DIM4)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE** INPLACE_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-{
-  $1 = PySequence_Check($input);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE** INPLACE_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-  (DATA_TYPE** array=NULL, PyArrayObject** object_array=NULL)
-{
-  npy_intp size[3] = { -1, -1, -1 };
-  PyArrayObject* temp_array;
-  Py_ssize_t i;
-
-  /* length of the list */
-  $2 = PyList_Size($input);
-
-  /* the arrays */
-  array = (DATA_TYPE **)malloc($2*sizeof(DATA_TYPE *));
-  object_array = (PyArrayObject **)calloc($2,sizeof(PyArrayObject *));
-
-  if (array == NULL || object_array == NULL)
-  {
-    SWIG_fail;
-  }
-
-  for (i=0; i<$2; i++)
-  {
-    temp_array = obj_to_array_no_conversion(PySequence_GetItem($input,i), DATA_TYPECODE);
-
-    /* the new array must be stored so that it can be destroyed in freearg */
-    object_array[i] = temp_array;
-
-    if ( !temp_array || !require_dimensions(temp_array, 3) ||
-      !require_contiguous(temp_array) ||
-      !require_native(temp_array) ||
-      !PyArray_EquivTypenums(array_type(temp_array), DATA_TYPECODE)
-    ) SWIG_fail;
-
-    /* store the size of the first array in the list, then use that for comparison. */
-    if (i == 0)
-    {
-      size[0] = array_size(temp_array,0);
-      size[1] = array_size(temp_array,1);
-      size[2] = array_size(temp_array,2);
-    }
-
-    if (!require_size(temp_array, size, 3)) SWIG_fail;
-
-    array[i] = (DATA_TYPE*) array_data(temp_array);
-  }
-
-  $1 = (DATA_TYPE**) array;
-  $3 = (DIM_TYPE) size[0];
-  $4 = (DIM_TYPE) size[1];
-  $5 = (DIM_TYPE) size[2];
-}
-%typemap(freearg)
-  (DATA_TYPE** INPLACE_ARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-{
-  if (array$argnum!=NULL) free(array$argnum);
-  if (object_array$argnum!=NULL) free(object_array$argnum);
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4,
- *                    DATA_TYPE* INPLACE_ARRAY4)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* INPLACE_ARRAY4)
-{
-  $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
-                                                 DATA_TYPECODE);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* INPLACE_ARRAY4)
-  (PyArrayObject* array=NULL)
-{
-  array = obj_to_array_no_conversion($input, DATA_TYPECODE);
-  if (!array || !require_dimensions(array,4) || !require_contiguous(array)
-      || !require_native(array)) SWIG_fail;
-  $1 = (DIM_TYPE) array_size(array,0);
-  $2 = (DIM_TYPE) array_size(array,1);
-  $3 = (DIM_TYPE) array_size(array,2);
-  $4 = (DIM_TYPE) array_size(array,3);
-  $5 = (DATA_TYPE*) array_data(array);
-}
-
-/* Typemap suite for (DATA_TYPE* INPLACE_FARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2,
- *                    DIM_TYPE DIM3, DIM_TYPE DIM4)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE* INPLACE_FARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-{
-  $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
-                                                 DATA_TYPECODE);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE* INPLACE_FARRAY4, DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4)
-  (PyArrayObject* array=NULL)
-{
-  array = obj_to_array_no_conversion($input, DATA_TYPECODE);
-  if (!array || !require_dimensions(array,4) || !require_contiguous(array) ||
-      !require_native(array) || !require_fortran(array)) SWIG_fail;
-  $1 = (DATA_TYPE*) array_data(array);
-  $2 = (DIM_TYPE) array_size(array,0);
-  $3 = (DIM_TYPE) array_size(array,1);
-  $4 = (DIM_TYPE) array_size(array,2);
-  $5 = (DIM_TYPE) array_size(array,3);
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3,
- *                    DATA_TYPE* INPLACE_FARRAY4)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* INPLACE_FARRAY4)
-{
-  $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
-                                                 DATA_TYPECODE);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DIM_TYPE DIM1, DIM_TYPE DIM2, DIM_TYPE DIM3, DIM_TYPE DIM4, DATA_TYPE* INPLACE_FARRAY4)
-  (PyArrayObject* array=NULL)
-{
-  array = obj_to_array_no_conversion($input, DATA_TYPECODE);
-  if (!array || !require_dimensions(array,4) || !require_contiguous(array)
-      || !require_native(array) || !require_fortran(array)) SWIG_fail;
-  $1 = (DIM_TYPE) array_size(array,0);
-  $2 = (DIM_TYPE) array_size(array,1);
-  $3 = (DIM_TYPE) array_size(array,2);
-  $4 = (DIM_TYPE) array_size(array,3);
-  $5 = (DATA_TYPE*) array_data(array);
-}
-
-/*************************/
-/* Argout Array Typemaps */
-/*************************/
-
-/* Typemap suite for (DATA_TYPE ARGOUT_ARRAY1[ANY])
- */
-%typemap(in,numinputs=0,
-         fragment="NumPy_Backward_Compatibility,NumPy_Macros")
-  (DATA_TYPE ARGOUT_ARRAY1[ANY])
-  (PyObject* array = NULL)
-{
-  npy_intp dims[1] = { $1_dim0 };
-  array = PyArray_SimpleNew(1, dims, DATA_TYPECODE);
-  if (!array) SWIG_fail;
-  $1 = ($1_ltype) array_data(array);
-}
-%typemap(argout)
-  (DATA_TYPE ARGOUT_ARRAY1[ANY])
-{
-  $result = SWIG_Python_AppendOutput($result,(PyObject*)array$argnum);
-}
-
-/* Typemap suite for (DATA_TYPE* ARGOUT_ARRAY1, DIM_TYPE DIM1)
- */
-%typemap(in,numinputs=1,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE* ARGOUT_ARRAY1, DIM_TYPE DIM1)
-  (PyObject* array = NULL)
-{
-  npy_intp dims[1];
-  if (!PyInt_Check($input))
-  {
-    const char* typestring = pytype_string($input);
-    PyErr_Format(PyExc_TypeError,
-                 "Int dimension expected.  '%s' given.",
-                 typestring);
-    SWIG_fail;
-  }
-  $2 = (DIM_TYPE) PyInt_AsLong($input);
-  dims[0] = (npy_intp) $2;
-  array = PyArray_SimpleNew(1, dims, DATA_TYPECODE);
-  if (!array) SWIG_fail;
-  $1 = (DATA_TYPE*) array_data(array);
-}
-%typemap(argout)
-  (DATA_TYPE* ARGOUT_ARRAY1, DIM_TYPE DIM1)
-{
-  $result = SWIG_Python_AppendOutput($result,(PyObject*)array$argnum);
-}
-
-/* Typemap suite for (DIM_TYPE DIM1, DATA_TYPE* ARGOUT_ARRAY1)
- */
-%typemap(in,numinputs=1,
-         fragment="NumPy_Fragments")
-  (DIM_TYPE DIM1, DATA_TYPE* ARGOUT_ARRAY1)
-  (PyObject* array = NULL)
-{
-  npy_intp dims[1];
-  if (!PyInt_Check($input))
-  {
-    const char* typestring = pytype_string($input);
-    PyErr_Format(PyExc_TypeError,
-                 "Int dimension expected.  '%s' given.",
-                 typestring);
-    SWIG_fail;
-  }
-  $1 = (DIM_TYPE) PyInt_AsLong($input);
-  dims[0] = (npy_intp) $1;
-  array = PyArray_SimpleNew(1, dims, DATA_TYPECODE);
-  if (!array) SWIG_fail;
-  $2 = (DATA_TYPE*) array_data(array);
-}
-%typemap(argout)
-  (DIM_TYPE DIM1, DATA_TYPE* ARGOUT_ARRAY1)
-{
-  $result = SWIG_Python_AppendOutput($result,(PyObject*)array$argnum);
-}
-
-/* Typemap suite for (DATA_TYPE ARGOUT_ARRAY2[ANY][ANY])
- */
-%typemap(in,numinputs=0,
-         fragment="NumPy_Backward_Compatibility,NumPy_Macros")
-  (DATA_TYPE ARGOUT_ARRAY2[ANY][ANY])
-  (PyObject* array = NULL)
-{
-  npy_intp dims[2] = { $1_dim0, $1_dim1 };
-  array = PyArray_SimpleNew(2, dims, DATA_TYPECODE);
-  if (!array) SWIG_fail;
-  $1 = ($1_ltype) array_data(array);
-}
-%typemap(argout)
-  (DATA_TYPE ARGOUT_ARRAY2[ANY][ANY])
-{
-  $result = SWIG_Python_AppendOutput($result,(PyObject*)array$argnum);
-}
-
-/* Typemap suite for (DATA_TYPE ARGOUT_ARRAY3[ANY][ANY][ANY])
- */
-%typemap(in,numinputs=0,
-         fragment="NumPy_Backward_Compatibility,NumPy_Macros")
-  (DATA_TYPE ARGOUT_ARRAY3[ANY][ANY][ANY])
-  (PyObject* array = NULL)
-{
-  npy_intp dims[3] = { $1_dim0, $1_dim1, $1_dim2 };
-  array = PyArray_SimpleNew(3, dims, DATA_TYPECODE);
-  if (!array) SWIG_fail;
-  $1 = ($1_ltype) array_data(array);
-}
-%typemap(argout)
-  (DATA_TYPE ARGOUT_ARRAY3[ANY][ANY][ANY])
-{
-  $result = SWIG_Python_AppendOutput($result,(PyObject*)array$argnum);
-}
-
-/* Typemap suite for (DATA_TYPE ARGOUT_ARRAY4[ANY][ANY][ANY][ANY])
- */
-%typemap(in,numinputs=0,
-         fragment="NumPy_Backward_Compatibility,NumPy_Macros")
-  (DATA_TYPE ARGOUT_ARRAY4[ANY][ANY][ANY][ANY])
-  (PyObject* array = NULL)
-{
-  npy_intp dims[4] = { $1_dim0, $1_dim1, $1_dim2, $1_dim3 };
-  array = PyArray_SimpleNew(4, dims, DATA_TYPECODE);
-  if (!array) SWIG_fail;
-  $1 = ($1_ltype) array_data(array);
-}
-%typemap(argout)
-  (DATA_TYPE ARGOUT_ARRAY4[ANY][ANY][ANY][ANY])
-{
-  $result = SWIG_Python_AppendOutput($result,(PyObject*)array$argnum);
-}
-
-/*****************************/
-/* Argoutview Array Typemaps */
-/*****************************/
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1)
- */
-%typemap(in,numinputs=0)
-  (DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1    )
-  (DATA_TYPE*  data_temp = NULL , DIM_TYPE  dim_temp)
-{
-  $1 = &data_temp;
-  $2 = &dim_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility")
-  (DATA_TYPE** ARGOUTVIEW_ARRAY1, DIM_TYPE* DIM1)
-{
-  npy_intp dims[1] = { *$2 };
-  PyObject* obj = PyArray_SimpleNewFromData(1, dims, DATA_TYPECODE, (void*)(*$1));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array) SWIG_fail;
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEW_ARRAY1)
- */
-%typemap(in,numinputs=0)
-  (DIM_TYPE* DIM1    , DATA_TYPE** ARGOUTVIEW_ARRAY1)
-  (DIM_TYPE  dim_temp, DATA_TYPE*  data_temp = NULL )
-{
-  $1 = &dim_temp;
-  $2 = &data_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility")
-  (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEW_ARRAY1)
-{
-  npy_intp dims[1] = { *$1 };
-  PyObject* obj = PyArray_SimpleNewFromData(1, dims, DATA_TYPECODE, (void*)(*$2));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array) SWIG_fail;
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
- */
-%typemap(in,numinputs=0)
-  (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1     , DIM_TYPE* DIM2     )
-  (DATA_TYPE*  data_temp = NULL , DIM_TYPE  dim1_temp, DIM_TYPE  dim2_temp)
-{
-  $1 = &data_temp;
-  $2 = &dim1_temp;
-  $3 = &dim2_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility")
-  (DATA_TYPE** ARGOUTVIEW_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
-{
-  npy_intp dims[2] = { *$2, *$3 };
-  PyObject* obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$1));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array) SWIG_fail;
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_ARRAY2)
- */
-%typemap(in,numinputs=0)
-  (DIM_TYPE* DIM1     , DIM_TYPE* DIM2     , DATA_TYPE** ARGOUTVIEW_ARRAY2)
-  (DIM_TYPE  dim1_temp, DIM_TYPE  dim2_temp, DATA_TYPE*  data_temp = NULL )
-{
-  $1 = &dim1_temp;
-  $2 = &dim2_temp;
-  $3 = &data_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility")
-  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_ARRAY2)
-{
-  npy_intp dims[2] = { *$1, *$2 };
-  PyObject* obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$3));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array) SWIG_fail;
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
- */
-%typemap(in,numinputs=0)
-  (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1     , DIM_TYPE* DIM2     )
-  (DATA_TYPE*  data_temp = NULL  , DIM_TYPE  dim1_temp, DIM_TYPE  dim2_temp)
-{
-  $1 = &data_temp;
-  $2 = &dim1_temp;
-  $3 = &dim2_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements")
-  (DATA_TYPE** ARGOUTVIEW_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
-{
-  npy_intp dims[2] = { *$2, *$3 };
-  PyObject* obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$1));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array || !require_fortran(array)) SWIG_fail;
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_FARRAY2)
- */
-%typemap(in,numinputs=0)
-  (DIM_TYPE* DIM1     , DIM_TYPE* DIM2     , DATA_TYPE** ARGOUTVIEW_FARRAY2)
-  (DIM_TYPE  dim1_temp, DIM_TYPE  dim2_temp, DATA_TYPE*  data_temp = NULL  )
-{
-  $1 = &dim1_temp;
-  $2 = &dim2_temp;
-  $3 = &data_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements")
-  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEW_FARRAY2)
-{
-  npy_intp dims[2] = { *$1, *$2 };
-  PyObject* obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$3));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array || !require_fortran(array)) SWIG_fail;
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
-                      DIM_TYPE* DIM3)
- */
-%typemap(in,numinputs=0)
-  (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    )
-  (DATA_TYPE* data_temp = NULL  , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp)
-{
-  $1 = &data_temp;
-  $2 = &dim1_temp;
-  $3 = &dim2_temp;
-  $4 = &dim3_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility")
-  (DATA_TYPE** ARGOUTVIEW_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
-{
-  npy_intp dims[3] = { *$2, *$3, *$4 };
-  PyObject* obj = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$1));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array) SWIG_fail;
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3,
-                      DATA_TYPE** ARGOUTVIEW_ARRAY3)
- */
-%typemap(in,numinputs=0)
-  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_ARRAY3)
-  (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DATA_TYPE* data_temp = NULL)
-{
-  $1 = &dim1_temp;
-  $2 = &dim2_temp;
-  $3 = &dim3_temp;
-  $4 = &data_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility")
-  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_ARRAY3)
-{
-  npy_intp dims[3] = { *$1, *$2, *$3 };
-  PyObject* obj = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$4));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array) SWIG_fail;
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
-                      DIM_TYPE* DIM3)
- */
-%typemap(in,numinputs=0)
-  (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    )
-  (DATA_TYPE* data_temp = NULL   , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp)
-{
-  $1 = &data_temp;
-  $2 = &dim1_temp;
-  $3 = &dim2_temp;
-  $4 = &dim3_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements")
-  (DATA_TYPE** ARGOUTVIEW_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
-{
-  npy_intp dims[3] = { *$2, *$3, *$4 };
-  PyObject* obj = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$1));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array || !require_fortran(array)) SWIG_fail;
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3,
-                      DATA_TYPE** ARGOUTVIEW_FARRAY3)
- */
-%typemap(in,numinputs=0)
-  (DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DATA_TYPE** ARGOUTVIEW_FARRAY3)
-  (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DATA_TYPE* data_temp = NULL   )
-{
-  $1 = &dim1_temp;
-  $2 = &dim2_temp;
-  $3 = &dim3_temp;
-  $4 = &data_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements")
-  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEW_FARRAY3)
-{
-  npy_intp dims[3] = { *$1, *$2, *$3 };
-  PyObject* obj = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$4));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array || !require_fortran(array)) SWIG_fail;
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_ARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
-                      DIM_TYPE* DIM3, DIM_TYPE* DIM4)
- */
-%typemap(in,numinputs=0)
-  (DATA_TYPE** ARGOUTVIEW_ARRAY4, DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DIM_TYPE* DIM4    )
-  (DATA_TYPE* data_temp = NULL  , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DIM_TYPE dim4_temp)
-{
-  $1 = &data_temp;
-  $2 = &dim1_temp;
-  $3 = &dim2_temp;
-  $4 = &dim3_temp;
-  $5 = &dim4_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility")
-  (DATA_TYPE** ARGOUTVIEW_ARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4)
-{
-  npy_intp dims[4] = { *$2, *$3, *$4 , *$5 };
-  PyObject* obj = PyArray_SimpleNewFromData(4, dims, DATA_TYPECODE, (void*)(*$1));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array) SWIG_fail;
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4,
-                      DATA_TYPE** ARGOUTVIEW_ARRAY4)
- */
-%typemap(in,numinputs=0)
-  (DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DIM_TYPE* DIM4    , DATA_TYPE** ARGOUTVIEW_ARRAY4)
-  (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DIM_TYPE dim4_temp, DATA_TYPE* data_temp = NULL  )
-{
-  $1 = &dim1_temp;
-  $2 = &dim2_temp;
-  $3 = &dim3_temp;
-  $4 = &dim4_temp;
-  $5 = &data_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility")
-  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4, DATA_TYPE** ARGOUTVIEW_ARRAY4)
-{
-  npy_intp dims[4] = { *$1, *$2, *$3 , *$4 };
-  PyObject* obj = PyArray_SimpleNewFromData(4, dims, DATA_TYPECODE, (void*)(*$5));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array) SWIG_fail;
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEW_FARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
-                      DIM_TYPE* DIM3, DIM_TYPE* DIM4)
- */
-%typemap(in,numinputs=0)
-  (DATA_TYPE** ARGOUTVIEW_FARRAY4, DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DIM_TYPE* DIM4    )
-  (DATA_TYPE* data_temp = NULL   , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DIM_TYPE dim4_temp)
-{
-  $1 = &data_temp;
-  $2 = &dim1_temp;
-  $3 = &dim2_temp;
-  $4 = &dim3_temp;
-  $5 = &dim4_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements")
-  (DATA_TYPE** ARGOUTVIEW_FARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4)
-{
-  npy_intp dims[4] = { *$2, *$3, *$4 , *$5 };
-  PyObject* obj = PyArray_SimpleNewFromData(4, dims, DATA_TYPECODE, (void*)(*$1));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array || !require_fortran(array)) SWIG_fail;
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4,
-                      DATA_TYPE** ARGOUTVIEW_FARRAY4)
- */
-%typemap(in,numinputs=0)
-  (DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DIM_TYPE* DIM4    , DATA_TYPE** ARGOUTVIEW_FARRAY4)
-  (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DIM_TYPE dim4_temp, DATA_TYPE* data_temp = NULL   )
-{
-  $1 = &dim1_temp;
-  $2 = &dim2_temp;
-  $3 = &dim3_temp;
-  $4 = &dim4_temp;
-  $5 = &data_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements")
-  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4, DATA_TYPE** ARGOUTVIEW_FARRAY4)
-{
-  npy_intp dims[4] = { *$1, *$2, *$3 , *$4 };
-  PyObject* obj = PyArray_SimpleNewFromData(4, dims, DATA_TYPECODE, (void*)(*$5));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array || !require_fortran(array)) SWIG_fail;
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/*************************************/
-/* Managed Argoutview Array Typemaps */
-/*************************************/
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEWM_ARRAY1, DIM_TYPE* DIM1)
- */
-%typemap(in,numinputs=0)
-  (DATA_TYPE** ARGOUTVIEWM_ARRAY1, DIM_TYPE* DIM1    )
-  (DATA_TYPE*  data_temp = NULL  , DIM_TYPE  dim_temp)
-{
-  $1 = &data_temp;
-  $2 = &dim_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility,NumPy_Utilities")
-  (DATA_TYPE** ARGOUTVIEWM_ARRAY1, DIM_TYPE* DIM1)
-{
-  npy_intp dims[1] = { *$2 };
-  PyObject* obj = PyArray_SimpleNewFromData(1, dims, DATA_TYPECODE, (void*)(*$1));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array) SWIG_fail;
-
-%#ifdef SWIGPY_USE_CAPSULE
-    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-%#else
-    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-%#endif
-
-%#if NPY_API_VERSION < 0x00000007
-  PyArray_BASE(array) = cap;
-%#else
-  PyArray_SetBaseObject(array,cap);
-%#endif
-
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEWM_ARRAY1)
- */
-%typemap(in,numinputs=0)
-  (DIM_TYPE* DIM1    , DATA_TYPE** ARGOUTVIEWM_ARRAY1)
-  (DIM_TYPE  dim_temp, DATA_TYPE*  data_temp = NULL  )
-{
-  $1 = &dim_temp;
-  $2 = &data_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility,NumPy_Utilities")
-  (DIM_TYPE* DIM1, DATA_TYPE** ARGOUTVIEWM_ARRAY1)
-{
-  npy_intp dims[1] = { *$1 };
-  PyObject* obj = PyArray_SimpleNewFromData(1, dims, DATA_TYPECODE, (void*)(*$2));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array) SWIG_fail;
-
-%#ifdef SWIGPY_USE_CAPSULE
-    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-%#else
-    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-%#endif
-
-%#if NPY_API_VERSION < 0x00000007
-  PyArray_BASE(array) = cap;
-%#else
-  PyArray_SetBaseObject(array,cap);
-%#endif
-
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEWM_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
- */
-%typemap(in,numinputs=0)
-  (DATA_TYPE** ARGOUTVIEWM_ARRAY2, DIM_TYPE* DIM1     , DIM_TYPE* DIM2     )
-  (DATA_TYPE*  data_temp = NULL  , DIM_TYPE  dim1_temp, DIM_TYPE  dim2_temp)
-{
-  $1 = &data_temp;
-  $2 = &dim1_temp;
-  $3 = &dim2_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility,NumPy_Utilities")
-  (DATA_TYPE** ARGOUTVIEWM_ARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
-{
-  npy_intp dims[2] = { *$2, *$3 };
-  PyObject* obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$1));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array) SWIG_fail;
-
-%#ifdef SWIGPY_USE_CAPSULE
-    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-%#else
-    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-%#endif
-
-%#if NPY_API_VERSION < 0x00000007
-  PyArray_BASE(array) = cap;
-%#else
-  PyArray_SetBaseObject(array,cap);
-%#endif
-
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEWM_ARRAY2)
- */
-%typemap(in,numinputs=0)
-  (DIM_TYPE* DIM1     , DIM_TYPE* DIM2     , DATA_TYPE** ARGOUTVIEWM_ARRAY2)
-  (DIM_TYPE  dim1_temp, DIM_TYPE  dim2_temp, DATA_TYPE*  data_temp = NULL  )
-{
-  $1 = &dim1_temp;
-  $2 = &dim2_temp;
-  $3 = &data_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility,NumPy_Utilities")
-  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEWM_ARRAY2)
-{
-  npy_intp dims[2] = { *$1, *$2 };
-  PyObject* obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$3));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array) SWIG_fail;
-
-%#ifdef SWIGPY_USE_CAPSULE
-    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-%#else
-    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-%#endif
-
-%#if NPY_API_VERSION < 0x00000007
-  PyArray_BASE(array) = cap;
-%#else
-  PyArray_SetBaseObject(array,cap);
-%#endif
-
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEWM_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
- */
-%typemap(in,numinputs=0)
-  (DATA_TYPE** ARGOUTVIEWM_FARRAY2, DIM_TYPE* DIM1     , DIM_TYPE* DIM2     )
-  (DATA_TYPE*  data_temp = NULL   , DIM_TYPE  dim1_temp, DIM_TYPE  dim2_temp)
-{
-  $1 = &data_temp;
-  $2 = &dim1_temp;
-  $3 = &dim2_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements,NumPy_Utilities")
-  (DATA_TYPE** ARGOUTVIEWM_FARRAY2, DIM_TYPE* DIM1, DIM_TYPE* DIM2)
-{
-  npy_intp dims[2] = { *$2, *$3 };
-  PyObject* obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$1));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array || !require_fortran(array)) SWIG_fail;
-
-%#ifdef SWIGPY_USE_CAPSULE
-    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-%#else
-    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-%#endif
-
-%#if NPY_API_VERSION < 0x00000007
-  PyArray_BASE(array) = cap;
-%#else
-  PyArray_SetBaseObject(array,cap);
-%#endif
-
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEWM_FARRAY2)
- */
-%typemap(in,numinputs=0)
-  (DIM_TYPE* DIM1     , DIM_TYPE* DIM2     , DATA_TYPE** ARGOUTVIEWM_FARRAY2)
-  (DIM_TYPE  dim1_temp, DIM_TYPE  dim2_temp, DATA_TYPE*  data_temp = NULL   )
-{
-  $1 = &dim1_temp;
-  $2 = &dim2_temp;
-  $3 = &data_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements,NumPy_Utilities")
-  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DATA_TYPE** ARGOUTVIEWM_FARRAY2)
-{
-  npy_intp dims[2] = { *$1, *$2 };
-  PyObject* obj = PyArray_SimpleNewFromData(2, dims, DATA_TYPECODE, (void*)(*$3));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array || !require_fortran(array)) SWIG_fail;
-
-%#ifdef SWIGPY_USE_CAPSULE
-    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-%#else
-    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-%#endif
-
-%#if NPY_API_VERSION < 0x00000007
-  PyArray_BASE(array) = cap;
-%#else
-  PyArray_SetBaseObject(array,cap);
-%#endif
-
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEWM_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
-                      DIM_TYPE* DIM3)
- */
-%typemap(in,numinputs=0)
-  (DATA_TYPE** ARGOUTVIEWM_ARRAY3, DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    )
-  (DATA_TYPE* data_temp = NULL   , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp)
-{
-  $1 = &data_temp;
-  $2 = &dim1_temp;
-  $3 = &dim2_temp;
-  $4 = &dim3_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility,NumPy_Utilities")
-  (DATA_TYPE** ARGOUTVIEWM_ARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
-{
-  npy_intp dims[3] = { *$2, *$3, *$4 };
-  PyObject* obj = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$1));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array) SWIG_fail;
-
-%#ifdef SWIGPY_USE_CAPSULE
-    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-%#else
-    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-%#endif
-
-%#if NPY_API_VERSION < 0x00000007
-  PyArray_BASE(array) = cap;
-%#else
-  PyArray_SetBaseObject(array,cap);
-%#endif
-
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3,
-                      DATA_TYPE** ARGOUTVIEWM_ARRAY3)
- */
-%typemap(in,numinputs=0)
-  (DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DATA_TYPE** ARGOUTVIEWM_ARRAY3)
-  (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DATA_TYPE* data_temp = NULL   )
-{
-  $1 = &dim1_temp;
-  $2 = &dim2_temp;
-  $3 = &dim3_temp;
-  $4 = &data_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility,NumPy_Utilities")
-  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEWM_ARRAY3)
-{
-  npy_intp dims[3] = { *$1, *$2, *$3 };
-  PyObject* obj= PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$4));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array) SWIG_fail;
-
-%#ifdef SWIGPY_USE_CAPSULE
-    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-%#else
-    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-%#endif
-
-%#if NPY_API_VERSION < 0x00000007
-  PyArray_BASE(array) = cap;
-%#else
-  PyArray_SetBaseObject(array,cap);
-%#endif
-
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEWM_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
-                      DIM_TYPE* DIM3)
- */
-%typemap(in,numinputs=0)
-  (DATA_TYPE** ARGOUTVIEWM_FARRAY3, DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    )
-  (DATA_TYPE* data_temp = NULL    , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp)
-{
-  $1 = &data_temp;
-  $2 = &dim1_temp;
-  $3 = &dim2_temp;
-  $4 = &dim3_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements,NumPy_Utilities")
-  (DATA_TYPE** ARGOUTVIEWM_FARRAY3, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
-{
-  npy_intp dims[3] = { *$2, *$3, *$4 };
-  PyObject* obj = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$1));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array || !require_fortran(array)) SWIG_fail;
-
-%#ifdef SWIGPY_USE_CAPSULE
-    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-%#else
-    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-%#endif
-
-%#if NPY_API_VERSION < 0x00000007
-  PyArray_BASE(array) = cap;
-%#else
-  PyArray_SetBaseObject(array,cap);
-%#endif
-
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3,
-                      DATA_TYPE** ARGOUTVIEWM_FARRAY3)
- */
-%typemap(in,numinputs=0)
-  (DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DATA_TYPE** ARGOUTVIEWM_FARRAY3)
-  (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DATA_TYPE* data_temp = NULL    )
-{
-  $1 = &dim1_temp;
-  $2 = &dim2_temp;
-  $3 = &dim3_temp;
-  $4 = &data_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements,NumPy_Utilities")
-  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DATA_TYPE** ARGOUTVIEWM_FARRAY3)
-{
-  npy_intp dims[3] = { *$1, *$2, *$3 };
-  PyObject* obj = PyArray_SimpleNewFromData(3, dims, DATA_TYPECODE, (void*)(*$4));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array || !require_fortran(array)) SWIG_fail;
-
-%#ifdef SWIGPY_USE_CAPSULE
-    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-%#else
-    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-%#endif
-
-%#if NPY_API_VERSION < 0x00000007
-  PyArray_BASE(array) = cap;
-%#else
-  PyArray_SetBaseObject(array,cap);
-%#endif
-
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEWM_ARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
-                      DIM_TYPE* DIM3, DIM_TYPE* DIM4)
- */
-%typemap(in,numinputs=0)
-  (DATA_TYPE** ARGOUTVIEWM_ARRAY4, DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DIM_TYPE* DIM4    )
-  (DATA_TYPE* data_temp = NULL   , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DIM_TYPE dim4_temp)
-{
-  $1 = &data_temp;
-  $2 = &dim1_temp;
-  $3 = &dim2_temp;
-  $4 = &dim3_temp;
-  $5 = &dim4_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility,NumPy_Utilities")
-  (DATA_TYPE** ARGOUTVIEWM_ARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4)
-{
-  npy_intp dims[4] = { *$2, *$3, *$4 , *$5 };
-  PyObject* obj = PyArray_SimpleNewFromData(4, dims, DATA_TYPECODE, (void*)(*$1));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array) SWIG_fail;
-
-%#ifdef SWIGPY_USE_CAPSULE
-    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-%#else
-    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-%#endif
-
-%#if NPY_API_VERSION < 0x00000007
-  PyArray_BASE(array) = cap;
-%#else
-  PyArray_SetBaseObject(array,cap);
-%#endif
-
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4,
-                      DATA_TYPE** ARGOUTVIEWM_ARRAY4)
- */
-%typemap(in,numinputs=0)
-  (DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DIM_TYPE* DIM4    , DATA_TYPE** ARGOUTVIEWM_ARRAY4)
-  (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DIM_TYPE dim4_temp, DATA_TYPE* data_temp = NULL   )
-{
-  $1 = &dim1_temp;
-  $2 = &dim2_temp;
-  $3 = &dim3_temp;
-  $4 = &dim4_temp;
-  $5 = &data_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility,NumPy_Utilities")
-  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4, DATA_TYPE** ARGOUTVIEWM_ARRAY4)
-{
-  npy_intp dims[4] = { *$1, *$2, *$3 , *$4 };
-  PyObject* obj = PyArray_SimpleNewFromData(4, dims, DATA_TYPECODE, (void*)(*$5));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array) SWIG_fail;
-
-%#ifdef SWIGPY_USE_CAPSULE
-    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-%#else
-    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-%#endif
-
-%#if NPY_API_VERSION < 0x00000007
-  PyArray_BASE(array) = cap;
-%#else
-  PyArray_SetBaseObject(array,cap);
-%#endif
-
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEWM_FARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
-                      DIM_TYPE* DIM3, DIM_TYPE* DIM4)
- */
-%typemap(in,numinputs=0)
-  (DATA_TYPE** ARGOUTVIEWM_FARRAY4, DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DIM_TYPE* DIM4    )
-  (DATA_TYPE* data_temp = NULL    , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DIM_TYPE dim4_temp)
-{
-  $1 = &data_temp;
-  $2 = &dim1_temp;
-  $3 = &dim2_temp;
-  $4 = &dim3_temp;
-  $5 = &dim4_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements,NumPy_Utilities")
-  (DATA_TYPE** ARGOUTVIEWM_FARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3)
-{
-  npy_intp dims[4] = { *$2, *$3, *$4 , *$5 };
-  PyObject* obj = PyArray_SimpleNewFromData(4, dims, DATA_TYPECODE, (void*)(*$1));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array || !require_fortran(array)) SWIG_fail;
-
-%#ifdef SWIGPY_USE_CAPSULE
-    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-%#else
-    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-%#endif
-
-%#if NPY_API_VERSION < 0x00000007
-  PyArray_BASE(array) = cap;
-%#else
-  PyArray_SetBaseObject(array,cap);
-%#endif
-
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4,
-                      DATA_TYPE** ARGOUTVIEWM_FARRAY4)
- */
-%typemap(in,numinputs=0)
-  (DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DIM_TYPE* DIM4    , DATA_TYPE** ARGOUTVIEWM_FARRAY4)
-  (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DIM_TYPE dim4_temp, DATA_TYPE* data_temp = NULL    )
-{
-  $1 = &dim1_temp;
-  $2 = &dim2_temp;
-  $3 = &dim3_temp;
-  $4 = &dim4_temp;
-  $5 = &data_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements,NumPy_Utilities")
-  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4, DATA_TYPE** ARGOUTVIEWM_FARRAY4)
-{
-  npy_intp dims[4] = { *$1, *$2, *$3 , *$4 };
-  PyObject* obj = PyArray_SimpleNewFromData(4, dims, DATA_TYPECODE, (void*)(*$5));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array || !require_fortran(array)) SWIG_fail;
-
-%#ifdef SWIGPY_USE_CAPSULE
-    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-%#else
-    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-%#endif
-
-%#if NPY_API_VERSION < 0x00000007
-  PyArray_BASE(array) = cap;
-%#else
-  PyArray_SetBaseObject(array,cap);
-%#endif
-
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEWM_ARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
-                      DIM_TYPE* DIM3, DIM_TYPE* DIM4)
- */
-%typemap(in,numinputs=0)
-  (DATA_TYPE** ARGOUTVIEWM_ARRAY4, DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DIM_TYPE* DIM4    )
-  (DATA_TYPE* data_temp = NULL   , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DIM_TYPE dim4_temp)
-{
-  $1 = &data_temp;
-  $2 = &dim1_temp;
-  $3 = &dim2_temp;
-  $4 = &dim3_temp;
-  $5 = &dim4_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility,NumPy_Utilities")
-  (DATA_TYPE** ARGOUTVIEWM_ARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4)
-{
-  npy_intp dims[4] = { *$2, *$3, *$4 , *$5 };
-  PyObject* obj = PyArray_SimpleNewFromData(4, dims, DATA_TYPECODE, (void*)(*$1));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array) SWIG_fail;
-
-%#ifdef SWIGPY_USE_CAPSULE
-    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-%#else
-    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-%#endif
-
-%#if NPY_API_VERSION < 0x00000007
-  PyArray_BASE(array) = cap;
-%#else
-  PyArray_SetBaseObject(array,cap);
-%#endif
-
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4,
-                      DATA_TYPE** ARGOUTVIEWM_ARRAY4)
- */
-%typemap(in,numinputs=0)
-  (DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DIM_TYPE* DIM4    , DATA_TYPE** ARGOUTVIEWM_ARRAY4)
-  (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DIM_TYPE dim4_temp, DATA_TYPE* data_temp = NULL   )
-{
-  $1 = &dim1_temp;
-  $2 = &dim2_temp;
-  $3 = &dim3_temp;
-  $4 = &dim4_temp;
-  $5 = &data_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility,NumPy_Utilities")
-  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4, DATA_TYPE** ARGOUTVIEWM_ARRAY4)
-{
-  npy_intp dims[4] = { *$1, *$2, *$3 , *$4 };
-  PyObject* obj = PyArray_SimpleNewFromData(4, dims, DATA_TYPECODE, (void*)(*$5));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array) SWIG_fail;
-
-%#ifdef SWIGPY_USE_CAPSULE
-    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-%#else
-    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-%#endif
-
-%#if NPY_API_VERSION < 0x00000007
-  PyArray_BASE(array) = cap;
-%#else
-  PyArray_SetBaseObject(array,cap);
-%#endif
-
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DATA_TYPE** ARGOUTVIEWM_FARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2,
-                      DIM_TYPE* DIM3, DIM_TYPE* DIM4)
- */
-%typemap(in,numinputs=0)
-  (DATA_TYPE** ARGOUTVIEWM_FARRAY4, DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DIM_TYPE* DIM4    )
-  (DATA_TYPE* data_temp = NULL    , DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DIM_TYPE dim4_temp)
-{
-  $1 = &data_temp;
-  $2 = &dim1_temp;
-  $3 = &dim2_temp;
-  $4 = &dim3_temp;
-  $5 = &dim4_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements,NumPy_Utilities")
-  (DATA_TYPE** ARGOUTVIEWM_FARRAY4, DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4)
-{
-  npy_intp dims[4] = { *$2, *$3, *$4 , *$5 };
-  PyObject* obj = PyArray_SimpleNewFromData(4, dims, DATA_TYPECODE, (void*)(*$1));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array || !require_fortran(array)) SWIG_fail;
-
-%#ifdef SWIGPY_USE_CAPSULE
-    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-%#else
-    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-%#endif
-
-%#if NPY_API_VERSION < 0x00000007
-  PyArray_BASE(array) = cap;
-%#else
-  PyArray_SetBaseObject(array,cap);
-%#endif
-
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/* Typemap suite for (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4,
-                      DATA_TYPE** ARGOUTVIEWM_FARRAY4)
- */
-%typemap(in,numinputs=0)
-  (DIM_TYPE* DIM1    , DIM_TYPE* DIM2    , DIM_TYPE* DIM3    , DIM_TYPE* DIM4    , DATA_TYPE** ARGOUTVIEWM_FARRAY4)
-  (DIM_TYPE dim1_temp, DIM_TYPE dim2_temp, DIM_TYPE dim3_temp, DIM_TYPE dim4_temp, DATA_TYPE* data_temp = NULL    )
-{
-  $1 = &dim1_temp;
-  $2 = &dim2_temp;
-  $3 = &dim3_temp;
-  $4 = &dim4_temp;
-  $5 = &data_temp;
-}
-%typemap(argout,
-         fragment="NumPy_Backward_Compatibility,NumPy_Array_Requirements,NumPy_Utilities")
-  (DIM_TYPE* DIM1, DIM_TYPE* DIM2, DIM_TYPE* DIM3, DIM_TYPE* DIM4, DATA_TYPE** ARGOUTVIEWM_FARRAY4)
-{
-  npy_intp dims[4] = { *$1, *$2, *$3 , *$4 };
-  PyObject* obj = PyArray_SimpleNewFromData(4, dims, DATA_TYPECODE, (void*)(*$5));
-  PyArrayObject* array = (PyArrayObject*) obj;
-
-  if (!array || !require_fortran(array)) SWIG_fail;
-
-%#ifdef SWIGPY_USE_CAPSULE
-    PyObject* cap = PyCapsule_New((void*)(*$1), SWIGPY_CAPSULE_NAME, free_cap);
-%#else
-    PyObject* cap = PyCObject_FromVoidPtr((void*)(*$1), free);
-%#endif
-
-%#if NPY_API_VERSION < 0x00000007
-  PyArray_BASE(array) = cap;
-%#else
-  PyArray_SetBaseObject(array,cap);
-%#endif
-
-  $result = SWIG_Python_AppendOutput($result,obj);
-}
-
-/**************************************/
-/* In-Place Array Typemap - flattened */
-/**************************************/
-
-/* Typemap suite for (DATA_TYPE* INPLACE_ARRAY_FLAT, DIM_TYPE DIM_FLAT)
- */
-%typecheck(SWIG_TYPECHECK_DOUBLE_ARRAY,
-           fragment="NumPy_Macros")
-  (DATA_TYPE* INPLACE_ARRAY_FLAT, DIM_TYPE DIM_FLAT)
-{
-  $1 = is_array($input) && PyArray_EquivTypenums(array_type($input),
-                                                 DATA_TYPECODE);
-}
-%typemap(in,
-         fragment="NumPy_Fragments")
-  (DATA_TYPE* INPLACE_ARRAY_FLAT, DIM_TYPE DIM_FLAT)
-  (PyArrayObject* array=NULL, int i=1)
-{
-  array = obj_to_array_no_conversion($input, DATA_TYPECODE);
-  if (!array || !require_c_or_f_contiguous(array)
-      || !require_native(array)) SWIG_fail;
-  $1 = (DATA_TYPE*) array_data(array);
-  $2 = 1;
-  for (i=0; i < array_numdims(array); ++i) $2 *= array_size(array,i);
-}
-
-%enddef    /* %numpy_typemaps() macro */
-/* *************************************************************** */
-
-/* Concrete instances of the %numpy_typemaps() macro: Each invocation
- * below applies all of the typemaps above to the specified data type.
- */
-%numpy_typemaps(signed char       , NPY_BYTE     , int)
-%numpy_typemaps(unsigned char     , NPY_UBYTE    , int)
-%numpy_typemaps(short             , NPY_SHORT    , int)
-%numpy_typemaps(unsigned short    , NPY_USHORT   , int)
-%numpy_typemaps(int               , NPY_INT      , int)
-%numpy_typemaps(unsigned int      , NPY_UINT     , int)
-%numpy_typemaps(long              , NPY_LONG     , int)
-%numpy_typemaps(unsigned long     , NPY_ULONG    , int)
-%numpy_typemaps(long long         , NPY_LONGLONG , int)
-%numpy_typemaps(unsigned long long, NPY_ULONGLONG, int)
-%numpy_typemaps(float             , NPY_FLOAT    , int)
-%numpy_typemaps(double            , NPY_DOUBLE   , int)
-
-/* ***************************************************************
- * The follow macro expansion does not work, because C++ bool is 4
- * bytes and NPY_BOOL is 1 byte
- *
- *    %numpy_typemaps(bool, NPY_BOOL, int)
- */
-
-/* ***************************************************************
- * On my Mac, I get the following warning for this macro expansion:
- * 'swig/python detected a memory leak of type 'long double *', no destructor found.'
- *
- *    %numpy_typemaps(long double, NPY_LONGDOUBLE, int)
- */
-
-#ifdef __cplusplus
-
-%include <std_complex.i>
-
-%numpy_typemaps(std::complex<float>,  NPY_CFLOAT , int)
-%numpy_typemaps(std::complex<double>, NPY_CDOUBLE, int)
-
-#endif
-
-#endif /* SWIGPYTHON */
diff --git a/ElementsExamples/ElementsExamples/PiCalculator.h b/ElementsExamples/ElementsExamples/PiCalculator.h
deleted file mode 100644
index 65f17c82..00000000
--- a/ElementsExamples/ElementsExamples/PiCalculator.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * @file ElementsExamples/PiCalculator.h
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-/**
- * @addtogroup ElementsExamples ElementsExamples
- * @{
- */
-
-#ifndef ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_PICALCULATOR_H_
-#define ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_PICALCULATOR_H_
-
-#include "ElementsKernel/Export.h"
-
-namespace Elements {
-namespace Examples {
-
-class ELEMENTS_API PiCalculator {
-public:
-  PiCalculator() = default;
-  void calculate(unsigned int terms);
-
-  typedef void (*show_result_callback_type)(double pi);
-  void setShowResultCallback(show_result_callback_type f);
-
-private:
-  show_result_callback_type m_show_result_callback{};
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-#endif  // ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_PICALCULATOR_H_
-
-/**@}*/
diff --git a/ElementsExamples/ElementsExamples/Rect.pxd b/ElementsExamples/ElementsExamples/Rect.pxd
deleted file mode 100644
index ad331059..00000000
--- a/ElementsExamples/ElementsExamples/Rect.pxd
+++ /dev/null
@@ -1,9 +0,0 @@
-cimport ElementsExamples.CRectangle
-from ElementsExamples.CRectangle cimport Rectangle as CRectangle
-
-cdef class Rectangle:
-    cdef ElementsExamples.CRectangle.Rectangle *thisptr      # hold a C++ instance which we're wrapping
-    cpdef getLength(self)
-    cpdef getHeight(self)
-    cpdef getArea(self)
-    cpdef move(self, dx, dy)
diff --git a/ElementsExamples/ElementsExamples/Rectangle.h b/ElementsExamples/ElementsExamples/Rectangle.h
deleted file mode 100644
index 3ffca65a..00000000
--- a/ElementsExamples/ElementsExamples/Rectangle.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * @file ElementsExamples/Rectangle.h
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-/**
- * @addtogroup ElementsExamples ElementsExamples
- * @{
- */
-
-#ifndef ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_RECTANGLE_H_
-#define ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_RECTANGLE_H_
-
-#include <utility>  // for move
-
-#include "ElementsKernel/Export.h"  // for ELEMENTS_API
-
-namespace Elements {
-namespace Examples {
-
-class ELEMENTS_API Rectangle {
-public:
-  int x0;
-  int y0;
-  int x1;
-  int y1;
-  Rectangle(int xl, int yl, int xu, int yu);
-  ~Rectangle();
-  int  getLength();
-  int  getHeight();
-  int  getArea();
-  void move(int dx, int dy);
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-#endif  // ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_RECTANGLE_H_
-
-/**@}*/
diff --git a/ElementsExamples/ElementsExamples/SwigClassExample.h b/ElementsExamples/ElementsExamples/SwigClassExample.h
deleted file mode 100644
index ab4698ed..00000000
--- a/ElementsExamples/ElementsExamples/SwigClassExample.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * @file SwigClassExample.h
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-/**
- * @addtogroup ElementsExamples ElementsExamples
- * @{
- */
-
-#ifndef ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_SWIGCLASSEXAMPLE_H_
-#define ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_SWIGCLASSEXAMPLE_H_
-
-#include "ElementsKernel/Export.h"  // for ELEMENTS_API
-
-namespace Elements {
-namespace Examples {
-
-class ELEMENTS_API SwigClassExample {
-
-public:
-  explicit SwigClassExample(const double ra = 0.0, const double dec = 0.0) : m_ra(ra), m_dec(dec) {}
-
-  virtual ~SwigClassExample() = default;
-
-  double getRa() const;
-
-  double getDec() const;
-
-private:
-  double m_ra;
-  double m_dec;
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-#endif  // ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_SWIGCLASSEXAMPLE_H_
-
-/**@}*/
diff --git a/ElementsExamples/ElementsExamples/SwigExample.i b/ElementsExamples/ElementsExamples/SwigExample.i
deleted file mode 100644
index 788181e9..00000000
--- a/ElementsExamples/ElementsExamples/SwigExample.i
+++ /dev/null
@@ -1,35 +0,0 @@
-%module SwigExample
-
-%{
-
-#include "ElementsKernel/Export.h"
-#include "ElementsExamples/functionExample.h"
-#include "ElementsExamples/SwigClassExample.h"
-#include "ElementsExamples/ClassExample.h"
-
-%}
-
-namespace Elements {
-namespace Examples {
-
-int functionExample(int);
-
-class SwigClassExample {
-
-public:
-
-  SwigClassExample (const double ra, const double dec) :
-      m_ra(ra), m_dec(dec) {
-  }
-
-  virtual ~SwigClassExample() {} 
-
-
-  double getRa () const;
-
-  double getDec () const;
-
-};
-
-} // namespace Examples
-} // namespace Elements
diff --git a/ElementsExamples/ElementsExamples/TemplatedDataSourceUser.h b/ElementsExamples/ElementsExamples/TemplatedDataSourceUser.h
deleted file mode 100644
index 11717422..00000000
--- a/ElementsExamples/ElementsExamples/TemplatedDataSourceUser.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * @file TemplatedDataSourceUser.h
- *
- * @date Sep 23, 2015
- * @author Florian Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-/**
- * @addtogroup ElementsExamples ElementsExamples
- * @{
- */
-
-#ifndef ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_TEMPLATEDDATASOURCEUSER_H_
-#define ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_TEMPLATEDDATASOURCEUSER_H_
-
-namespace Elements {
-namespace Examples {
-
-/**
- * @class TemplatedDataSourceUser
- * @ingroup ElementsExamples
- * @brief This class has been created to demonstrate unit testing. It manipulate
- * an object representing a DataSource using template to achieve polymorphism.
- */
-class TemplatedDataSourceUser {
-public:
-  /**
-   * @brief Compute the sum of the values of the records stored into the provided
-   * DataSource
-   *
-   * @tparam T
-   * A type representing a DataSource. The type must declare the methods
-   * + size_t countRecords() const
-   * + double getRecordValue(size_t index) const
-   *
-   * @param data_source
-   * A reference to a DataSource object.
-   *
-   * @return The sum of the values of the records into the DataSource object
-   */
-  template <typename T>
-  double sumRecords(const T& data_source);
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-#define ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_TEMPLATEDDATASOURCEUSER_IMPL_
-#include "ElementsExamples/_impl/TemplatedDataSourceUser.tpp"
-#undef ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_TEMPLATEDDATASOURCEUSER_IMPL_
-
-#endif  // ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_TEMPLATEDDATASOURCEUSER_H_
-
-/**@}*/
diff --git a/ElementsExamples/ElementsExamples/UnitTestExample.h b/ElementsExamples/ElementsExamples/UnitTestExample.h
deleted file mode 100644
index e4315993..00000000
--- a/ElementsExamples/ElementsExamples/UnitTestExample.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * @file UnitTestExample.h
- *
- * @date Sep 22, 2015
- * @author Florian Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-/**
- * @addtogroup ElementsExamples ElementsExamples
- * @{
- */
-
-#ifndef ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_UNITTESTEXAMPLE_H_
-#define ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_UNITTESTEXAMPLE_H_
-
-#include "ElementsKernel/Export.h"
-#include <vector>
-
-namespace Elements {
-namespace Examples {
-
-/**
- * @class UnitTestExample
- * @ingroup ElementsExamples
- * @brief This class has been created to demonstrate unit testing.
- */
-class ELEMENTS_API UnitTestExample {
-
-public:
-  /**
-   * @brief
-   *  Returns a particular version of the "average" of the vector values
-
-   * @details
-   *  This method computes the "average" as the median of the given values if there are more
-   *  than 5 values. Otherwise, it returns the mean value instead of the median.
-   *
-   * If an even number of numbers is given, the returned value is the mean of the
-   * two middle values.
-   *
-   * @param v
-   *    The values to compute the "average" for
-   * @return
-   *    The "average" of the given values
-   * @throws Elements::Exception
-   *    If the given vector is empty
-   */
-  double average(const std::vector<int>& v);
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-#endif  // ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_UNITTESTEXAMPLE_H_
-
-/**@}*/
diff --git a/ElementsExamples/ElementsExamples/__init__.pxd b/ElementsExamples/ElementsExamples/__init__.pxd
deleted file mode 100644
index e69de29b..00000000
diff --git a/ElementsExamples/ElementsExamples/_impl/TemplatedDataSourceUser.tpp b/ElementsExamples/ElementsExamples/_impl/TemplatedDataSourceUser.tpp
deleted file mode 100644
index 2b8e4e3b..00000000
--- a/ElementsExamples/ElementsExamples/_impl/TemplatedDataSourceUser.tpp
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * @file ElementsExamples/TemplateDataSourceUser.tpp
- *
- *  Created on: Sep 23, 2015
- *      Author: fdubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_TEMPLATEDDATASOURCEUSER_IMPL_
-#error "This file should not be included directly! Use ElementsExamples/TemplatedDataSourceUser.h instead"
-#else
-
-#include <cstddef>  // for std::size_t
-
-namespace Elements {
-namespace Examples {
-
-template <typename T>
-double TemplatedDataSourceUser::sumRecords(const T& data_source) {
-  double      sum            = 0.;
-  std::size_t records_number = data_source.countRecords();
-  for (std::size_t index = 0; index < records_number; ++index) {
-    sum += data_source.getRecordValue(index);
-  }
-
-  return sum;
-}
-
-}  // namespace Examples
-}  // namespace Elements
-
-#endif  // ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_TEMPLATEDDATASOURCEUSER_IMPL_
diff --git a/ElementsExamples/ElementsExamples/callBackExample.h b/ElementsExamples/ElementsExamples/callBackExample.h
deleted file mode 100644
index 5df18a64..00000000
--- a/ElementsExamples/ElementsExamples/callBackExample.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * @file callBackExample.h
- *
- * @date Apr 1, 2020
- * @author Hubert Degaudenzi
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-/**
- * @addtogroup ElementsExamples ElementsExamples
- * @{
- */
-
-#ifndef ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_CALLBACKEXAMPLE_H_
-#define ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_CALLBACKEXAMPLE_H_
-
-#include <functional>
-#include <vector>
-
-#include "ElementsKernel/Export.h"
-
-namespace Elements {
-namespace Examples {
-
-ELEMENTS_API double testCallBack(std::vector<double> x, const std::function<double(std::vector<double>)>& fun);
-
-}  // namespace Examples
-}  // namespace Elements
-
-#endif  // ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_CALLBACKEXAMPLE_H_
-
-/**@}*/
diff --git a/ElementsExamples/ElementsExamples/crashingFunction.h b/ElementsExamples/ElementsExamples/crashingFunction.h
deleted file mode 100644
index 5fbd29b4..00000000
--- a/ElementsExamples/ElementsExamples/crashingFunction.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * @file crashingFunction.h
- *
- * @date Nov 15, 2016
- * @author hubert
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-/**
- * @addtogroup ElementsExamples ElementsExamples
- * @{
- */
-
-#ifndef ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_CRASHINGFUNCTION_H_
-#define ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_CRASHINGFUNCTION_H_
-
-#include "ElementsKernel/Export.h"
-
-namespace Elements {
-namespace Examples {
-
-ELEMENTS_API void crashingFunction();
-
-}  // namespace Examples
-}  // namespace Elements
-
-#endif  // ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_CRASHINGFUNCTION_H_
-
-/**@}*/
diff --git a/ElementsExamples/ElementsExamples/functionExample.h b/ElementsExamples/ElementsExamples/functionExample.h
deleted file mode 100644
index 79dc55a0..00000000
--- a/ElementsExamples/ElementsExamples/functionExample.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * @file functionExample.h
- *
- * @date Feb 16, 2016
- * @author hubert
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-/**
- * @addtogroup ElementsExamples ElementsExamples
- * @{
- */
-
-#ifndef ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_FUNCTIONEXAMPLE_H_
-#define ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_FUNCTIONEXAMPLE_H_
-
-#include "ElementsKernel/Export.h"
-
-namespace Elements {
-namespace Examples {
-
-ELEMENTS_API int functionExample(const int j);
-
-}  // namespace Examples
-}  // namespace Elements
-
-#endif  // ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_FUNCTIONEXAMPLE_H_
-
-/**@}*/
diff --git a/ElementsExamples/ElementsExamples/functionExample2.h b/ElementsExamples/ElementsExamples/functionExample2.h
deleted file mode 100644
index 98ac300f..00000000
--- a/ElementsExamples/ElementsExamples/functionExample2.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * @file functionExample.h
- *
- * @date Feb 16, 2016
- * @author hubert
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-/**
- * @addtogroup ElementsExamples ElementsExamples
- * @{
- */
-
-#ifndef ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_FUNCTIONEXAMPLE2_H_
-#define ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_FUNCTIONEXAMPLE2_H_
-
-#include "ElementsKernel/Export.h"
-
-namespace Elements {
-namespace Examples {
-
-ELEMENTS_API int functionExample2(const int j);
-
-}  // namespace Examples
-}  // namespace Elements
-
-#endif  // ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_FUNCTIONEXAMPLE2_H_
-
-/**@}*/
diff --git a/ElementsExamples/ElementsExamples/printProject.h b/ElementsExamples/ElementsExamples/printProject.h
deleted file mode 100644
index fa4b8eb1..00000000
--- a/ElementsExamples/ElementsExamples/printProject.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * @file printProject.h
- *
- * @date May 14, 2020
- * @author hubert
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-/**
- * @addtogroup ElementsExamples ElementsExamples
- * @{
- */
-
-#ifndef ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_PRINTPROJECT_H_
-#define ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_PRINTPROJECT_H_
-
-#include "ElementsKernel/Export.h"
-
-namespace Elements {
-namespace Examples {
-
-ELEMENTS_API void printProject();
-
-}  // namespace Examples
-}  // namespace Elements
-
-#endif  // ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_PRINTPROJECT_H_
-
-/**@}*/
diff --git a/ElementsExamples/ElementsExamples/util.h b/ElementsExamples/ElementsExamples/util.h
deleted file mode 100644
index ff0a8758..00000000
--- a/ElementsExamples/ElementsExamples/util.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * @file util.h
- *
- * @date Oct 14, 2016
- * @author hubert
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifndef ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_UTIL_H_
-#define ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_UTIL_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-int myFunc(void);
-
-extern int MY_CONST;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* ELEMENTSEXAMPLES_ELEMENTSEXAMPLES_UTIL_H_ */
diff --git a/ElementsExamples/auxdir/ElementsExamples/phz_cat.fits b/ElementsExamples/auxdir/ElementsExamples/phz_cat.fits
deleted file mode 100644
index 4428dc7c..00000000
--- a/ElementsExamples/auxdir/ElementsExamples/phz_cat.fits
+++ /dev/null
@@ -1,45 +0,0 @@
-SIMPLE  =                    T / file does conform to FITS standard             BITPIX  =                    8 / number of bits per data pixel                  NAXIS   =                    0 / number of data axes                            EXTEND  =                    T / FITS dataset may contain extensions            COMMENT   FITS (Flexible Image Transport System) format is defined in 'AstronomyCOMMENT   and Astrophysics', volume 376, page 359; bibcode: 2001A&A...376..359H END                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             XTENSION= 'BINTABLE'           / binary table extension                         BITPIX  =                    8 / 8-bit bytes                                    NAXIS   =                    2 / 2-dimensional binary table                     NAXIS1  =                 9719 / width of table in bytes                        NAXIS2  =                    5 / number of rows in table                        PCOUNT  =                    0 / size of special data area                      GCOUNT  =                    1 / one data group (required keyword)              TFIELDS =                   13 / number of fields in each row                   TTYPE1  = 'ID      '           / label for field   1                            TFORM1  = 'K       '           / data format of field: 8-byte INTEGER           TTYPE2  = 'Z-1D-PDF'           / label for field   2                            TFORM2  = '601D    '           / data format of field: 8-byte DOUBLE            TTYPE3  = 'LIKELIHOOD-Z-1D-PDF' / label for field   3                           TFORM3  = '601D    '           / data format of field: 8-byte DOUBLE            TTYPE4  = 'Z_OBS   '           / label for field   4                            TFORM4  = 'E       '           / data format of field: 4-byte REAL              TTYPE5  = 'SED     '           / label for field   5                            TFORM5  = '18A     '           / data format of field: ASCII Character          TTYPE6  = 'SED-Index'          / label for field   6                            TFORM6  = 'K       '           / data format of field: 8-byte INTEGER           TTYPE7  = 'ReddeningCurve'     / label for field   7                            TFORM7  = '17A     '           / data format of field: ASCII Character          TTYPE8  = 'E(B-V)  '           / label for field   8                            TFORM8  = 'D       '           / data format of field: 8-byte DOUBLE            TTYPE9  = 'Z       '           / label for field   9                            TFORM9  = 'D       '           / data format of field: 8-byte DOUBLE            TTYPE10 = 'Scale   '           / label for field  10                            TFORM10 = 'D       '           / data format of field: 8-byte DOUBLE            TTYPE11 = 'Posterior-Log'      / label for field  11                            TFORM11 = 'D       '           / data format of field: 8-byte DOUBLE            TTYPE12 = 'Likelihood-Log'     / label for field  12                            TFORM12 = 'D       '           / data format of field: 8-byte DOUBLE            TTYPE13 = '1DPDF-Peak-Z'       / label for field  13                            TFORM13 = 'D       '           / data format of field: 8-byte DOUBLE            TDESC1  = '        '                                                            TDESC2  = '        '                                                            TDESC3  = '        '                                                            TDESC4  = '        '                                                            TDESC5  = '        '                                                            TDESC6  = '        '                                                            TDESC7  = '        '                                                            TDESC8  = '        '                                                            TDESC9  = '        '                                                            TDESC10 = '        '                                                            TDESC11 = '        '                                                            TDESC12 = '        '                                                            TDESC13 = '        '                                                            COMMENT Z-BINS : {0,0.01,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.1,0.11,0.12,0COMMENT .13,0.14,0.15,0.16,0.17,0.18,0.19,0.2,0.21,0.22,0.23,0.24,0.25,0.26,0.27COMMENT ,0.28,0.29,0.3,0.31,0.32,0.33,0.34,0.35,0.36,0.37,0.38,0.39,0.4,0.41,0.4COMMENT 2,0.43,0.44,0.45,0.46,0.47,0.48,0.49,0.5,0.51,0.52,0.53,0.54,0.55,0.56,0COMMENT .57,0.58,0.59,0.6,0.61,0.62,0.63,0.64,0.65,0.66,0.67,0.68,0.69,0.7,0.71,COMMENT 0.72,0.73,0.74,0.75,0.76,0.77,0.78,0.79,0.8,0.81,0.82,0.83,0.84,0.85,0.8COMMENT 6,0.87,0.88,0.89,0.9,0.91,0.92,0.93,0.94,0.95,0.96,0.97,0.98,0.99,1,1.01COMMENT ,1.02,1.03,1.04,1.05,1.06,1.07,1.08,1.09,1.1,1.11,1.12,1.13,1.14,1.15,1.COMMENT 16,1.17,1.18,1.19,1.2,1.21,1.22,1.23,1.24,1.25,1.26,1.27,1.28,1.29,1.3,1COMMENT .31,1.32,1.33,1.34,1.35,1.36,1.37,1.38,1.39,1.4,1.41,1.42,1.43,1.44,1.45COMMENT ,1.46,1.47,1.48,1.49,1.5,1.51,1.52,1.53,1.54,1.55,1.56,1.57,1.58,1.59,1.COMMENT 6,1.61,1.62,1.63,1.64,1.65,1.66,1.67,1.68,1.69,1.7,1.71,1.72,1.73,1.74,1COMMENT .75,1.76,1.77,1.78,1.79,1.8,1.81,1.82,1.83,1.84,1.85,1.86,1.87,1.88,1.89COMMENT ,1.9,1.91,1.92,1.93,1.94,1.95,1.96,1.97,1.98,1.99,2,2.01,2.02,2.03,2.04,COMMENT 2.05,2.06,2.07,2.08,2.09,2.1,2.11,2.12,2.13,2.14,2.15,2.16,2.17,2.18,2.1COMMENT 9,2.2,2.21,2.22,2.23,2.24,2.25,2.26,2.27,2.28,2.29,2.3,2.31,2.32,2.33,2.COMMENT 34,2.35,2.36,2.37,2.38,2.39,2.4,2.41,2.42,2.43,2.44,2.45,2.46,2.47,2.48,COMMENT 2.49,2.5,2.51,2.52,2.53,2.54,2.55,2.56,2.57,2.58,2.59,2.6,2.61,2.62,2.63COMMENT ,2.64,2.65,2.66,2.67,2.68,2.69,2.7,2.71,2.72,2.73,2.74,2.75,2.76,2.77,2.COMMENT 78,2.79,2.8,2.81,2.82,2.83,2.84,2.85,2.86,2.87,2.88,2.89,2.9,2.91,2.92,2COMMENT .93,2.94,2.95,2.96,2.97,2.98,2.99,3,3.01,3.02,3.03,3.04,3.05,3.06,3.07,3COMMENT .08,3.09,3.1,3.11,3.12,3.13,3.14,3.15,3.16,3.17,3.18,3.19,3.2,3.21,3.22,COMMENT 3.23,3.24,3.25,3.26,3.27,3.28,3.29,3.3,3.31,3.32,3.33,3.34,3.35,3.36,3.3COMMENT 7,3.38,3.39,3.4,3.41,3.42,3.43,3.44,3.45,3.46,3.47,3.48,3.49,3.5,3.51,3.COMMENT 52,3.53,3.54,3.55,3.56,3.57,3.58,3.59,3.6,3.61,3.62,3.63,3.64,3.65,3.66,COMMENT 3.67,3.68,3.69,3.7,3.71,3.72,3.73,3.74,3.75,3.76,3.77,3.78,3.79,3.8,3.81COMMENT ,3.82,3.83,3.84,3.85,3.86,3.87,3.88,3.89,3.9,3.91,3.92,3.93,3.94,3.95,3.COMMENT 96,3.97,3.98,3.99,4,4.01,4.02,4.03,4.04,4.05,4.06,4.07,4.08,4.09,4.1,4.1COMMENT 1,4.12,4.13,4.14,4.15,4.16,4.17,4.18,4.19,4.2,4.21,4.22,4.23,4.24,4.25,4COMMENT .26,4.27,4.28,4.29,4.3,4.31,4.32,4.33,4.34,4.35,4.36,4.37,4.38,4.39,4.4,COMMENT 4.41,4.42,4.43,4.44,4.45,4.46,4.47,4.48,4.49,4.5,4.51,4.52,4.53,4.54,4.5COMMENT 5,4.56,4.57,4.58,4.59,4.6,4.61,4.62,4.63,4.64,4.65,4.66,4.67,4.68,4.69,4COMMENT .7,4.71,4.72,4.73,4.74,4.75,4.76,4.77,4.78,4.79,4.8,4.81,4.82,4.83,4.84,COMMENT 4.85,4.86,4.87,4.88,4.89,4.9,4.91,4.92,4.93,4.94,4.95,4.96,4.97,4.98,4.9COMMENT 9,5,5.01,5.02,5.03,5.04,5.05,5.06,5.07,5.08,5.09,5.1,5.11,5.12,5.13,5.14COMMENT ,5.15,5.16,5.17,5.18,5.19,5.2,5.21,5.22,5.23,5.24,5.25,5.26,5.27,5.28,5.COMMENT 29,5.3,5.31,5.32,5.33,5.34,5.35,5.36,5.37,5.38,5.39,5.4,5.41,5.42,5.43,5COMMENT .44,5.45,5.46,5.47,5.48,5.49,5.5,5.51,5.52,5.53,5.54,5.55,5.56,5.57,5.58COMMENT ,5.59,5.6,5.61,5.62,5.63,5.64,5.65,5.66,5.67,5.68,5.69,5.7,5.71,5.72,5.7COMMENT 3,5.74,5.75,5.76,5.77,5.78,5.79,5.8,5.81,5.82,5.83,5.84,5.85,5.86,5.87,5COMMENT .88,5.89,5.9,5.91,5.92,5.93,5.94,5.95,5.96,5.97,5.98,5.99,6}            COMMENT LIKELIHOOD-Z-BINS : {0,0.01,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09,0.1,COMMENT 0.11,0.12,0.13,0.14,0.15,0.16,0.17,0.18,0.19,0.2,0.21,0.22,0.23,0.24,0.2COMMENT 5,0.26,0.27,0.28,0.29,0.3,0.31,0.32,0.33,0.34,0.35,0.36,0.37,0.38,0.39,0COMMENT .4,0.41,0.42,0.43,0.44,0.45,0.46,0.47,0.48,0.49,0.5,0.51,0.52,0.53,0.54,COMMENT 0.55,0.56,0.57,0.58,0.59,0.6,0.61,0.62,0.63,0.64,0.65,0.66,0.67,0.68,0.6COMMENT 9,0.7,0.71,0.72,0.73,0.74,0.75,0.76,0.77,0.78,0.79,0.8,0.81,0.82,0.83,0.COMMENT 84,0.85,0.86,0.87,0.88,0.89,0.9,0.91,0.92,0.93,0.94,0.95,0.96,0.97,0.98,COMMENT 0.99,1,1.01,1.02,1.03,1.04,1.05,1.06,1.07,1.08,1.09,1.1,1.11,1.12,1.13,1COMMENT .14,1.15,1.16,1.17,1.18,1.19,1.2,1.21,1.22,1.23,1.24,1.25,1.26,1.27,1.28COMMENT ,1.29,1.3,1.31,1.32,1.33,1.34,1.35,1.36,1.37,1.38,1.39,1.4,1.41,1.42,1.4COMMENT 3,1.44,1.45,1.46,1.47,1.48,1.49,1.5,1.51,1.52,1.53,1.54,1.55,1.56,1.57,1COMMENT .58,1.59,1.6,1.61,1.62,1.63,1.64,1.65,1.66,1.67,1.68,1.69,1.7,1.71,1.72,COMMENT 1.73,1.74,1.75,1.76,1.77,1.78,1.79,1.8,1.81,1.82,1.83,1.84,1.85,1.86,1.8COMMENT 7,1.88,1.89,1.9,1.91,1.92,1.93,1.94,1.95,1.96,1.97,1.98,1.99,2,2.01,2.02COMMENT ,2.03,2.04,2.05,2.06,2.07,2.08,2.09,2.1,2.11,2.12,2.13,2.14,2.15,2.16,2.COMMENT 17,2.18,2.19,2.2,2.21,2.22,2.23,2.24,2.25,2.26,2.27,2.28,2.29,2.3,2.31,2COMMENT .32,2.33,2.34,2.35,2.36,2.37,2.38,2.39,2.4,2.41,2.42,2.43,2.44,2.45,2.46COMMENT ,2.47,2.48,2.49,2.5,2.51,2.52,2.53,2.54,2.55,2.56,2.57,2.58,2.59,2.6,2.6COMMENT 1,2.62,2.63,2.64,2.65,2.66,2.67,2.68,2.69,2.7,2.71,2.72,2.73,2.74,2.75,2COMMENT .76,2.77,2.78,2.79,2.8,2.81,2.82,2.83,2.84,2.85,2.86,2.87,2.88,2.89,2.9,COMMENT 2.91,2.92,2.93,2.94,2.95,2.96,2.97,2.98,2.99,3,3.01,3.02,3.03,3.04,3.05,COMMENT 3.06,3.07,3.08,3.09,3.1,3.11,3.12,3.13,3.14,3.15,3.16,3.17,3.18,3.19,3.2COMMENT ,3.21,3.22,3.23,3.24,3.25,3.26,3.27,3.28,3.29,3.3,3.31,3.32,3.33,3.34,3.COMMENT 35,3.36,3.37,3.38,3.39,3.4,3.41,3.42,3.43,3.44,3.45,3.46,3.47,3.48,3.49,COMMENT 3.5,3.51,3.52,3.53,3.54,3.55,3.56,3.57,3.58,3.59,3.6,3.61,3.62,3.63,3.64COMMENT ,3.65,3.66,3.67,3.68,3.69,3.7,3.71,3.72,3.73,3.74,3.75,3.76,3.77,3.78,3.COMMENT 79,3.8,3.81,3.82,3.83,3.84,3.85,3.86,3.87,3.88,3.89,3.9,3.91,3.92,3.93,3COMMENT .94,3.95,3.96,3.97,3.98,3.99,4,4.01,4.02,4.03,4.04,4.05,4.06,4.07,4.08,4COMMENT .09,4.1,4.11,4.12,4.13,4.14,4.15,4.16,4.17,4.18,4.19,4.2,4.21,4.22,4.23,COMMENT 4.24,4.25,4.26,4.27,4.28,4.29,4.3,4.31,4.32,4.33,4.34,4.35,4.36,4.37,4.3COMMENT 8,4.39,4.4,4.41,4.42,4.43,4.44,4.45,4.46,4.47,4.48,4.49,4.5,4.51,4.52,4.COMMENT 53,4.54,4.55,4.56,4.57,4.58,4.59,4.6,4.61,4.62,4.63,4.64,4.65,4.66,4.67,COMMENT 4.68,4.69,4.7,4.71,4.72,4.73,4.74,4.75,4.76,4.77,4.78,4.79,4.8,4.81,4.82COMMENT ,4.83,4.84,4.85,4.86,4.87,4.88,4.89,4.9,4.91,4.92,4.93,4.94,4.95,4.96,4.COMMENT 97,4.98,4.99,5,5.01,5.02,5.03,5.04,5.05,5.06,5.07,5.08,5.09,5.1,5.11,5.1COMMENT 2,5.13,5.14,5.15,5.16,5.17,5.18,5.19,5.2,5.21,5.22,5.23,5.24,5.25,5.26,5COMMENT .27,5.28,5.29,5.3,5.31,5.32,5.33,5.34,5.35,5.36,5.37,5.38,5.39,5.4,5.41,COMMENT 5.42,5.43,5.44,5.45,5.46,5.47,5.48,5.49,5.5,5.51,5.52,5.53,5.54,5.55,5.5COMMENT 6,5.57,5.58,5.59,5.6,5.61,5.62,5.63,5.64,5.65,5.66,5.67,5.68,5.69,5.7,5.COMMENT 71,5.72,5.73,5.74,5.75,5.76,5.77,5.78,5.79,5.8,5.81,5.82,5.83,5.84,5.85,COMMENT 5.86,5.87,5.88,5.89,5.9,5.91,5.92,5.93,5.94,5.95,5.96,5.97,5.98,5.99,6} HISTORY File modified by user 'hubert' with fv  on 2019-07-01T15:46:20          END                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ´û®—¸ýØÃ³x:àâÆ÷k,R¨IÀ<£º"ß€c®¬�Á“7’(bHIk7³TI˜yÕóòÃû
­Ä*ÿ—íeQ`7æ&2ssª‡r<nËÀeËµSÝ�½síŒäéÆ=aàŸ¸JM´6Ù8˜Ü=n1*:�Æ¸÷³Ý»PCggž°Èñ'¤}®Þ"yðì£±ã¢%·¶Ø:úã)o4uv¿ê-$ØèÝ•�0PŠ�|ÒÐ/1ûŒ<š[M3û¯‰9¥î±6šÉ�€7�7­p^¡$�Ô9œ™ÍÚÎ;nzÜÂ¼—�<nL=[Ò:=Ygœ9b¢>A/ì�ÏNR=tY�ê0JQ=�¨fûá=©é°™â=�‚g;®'?=ÿÓÈ)7r9?Z.÷Ûn@çÊÂO¨?÷ñ•ÙBIZ@T}?†­˜@(úå)Eœ??±Ð¬×?l™>Òõ+}rR>…¿?4Úúú=rtüÊ*4<“Ä“Ë³å;¦B¶BÈ Å:bE$Ÿ²Á8é†îÑo6«•H*ŽÕ]4´•‹¯Èr1¹)¦…ìë=.Ë™ÿùÇñÉ+Ù)¦…ìë=)`ƒV|ˆ¢#2ß<äq°m I)¦…ìë=”‰)¦…ìë=‰y)¦…ìë=€’šh€é)¦…ìë=´û®—¸ýØÃ³x:àâÆ÷k,R¨IÀ<£º"ß€c®¬�Á“7’(bHIk7³TI˜yÕóòÃû
­Ä*ÿ—íeQ`7æ&2ssª‡r<nËÀeËµSÝ�½síŒäéÆ=aàŸ¸JM´6Ù8˜Ü=n1*:�Æ¸÷³Ý»PCggž°Èñ'¤}®Þ"yðì£±ã¢%·¶Ø:úã)o4uv¿ê-$ØèÝ•�0PŠ�|ÒÐ/1ûŒ<š[M3û¯‰9¥î±6šÉ�€7�7­p^¡$�Ô9œ™ÍÚÎ;nzÜÂ¼—�<nL=[Ò:=Ygœ9b¢>A/ì�ÏNR=tY�ê0JQ=�¨fûá=©é°™â=�‚g;®'?=ÿÓÈ)7r9?Z.÷Ûn@çÊÂO¨?÷ñ•ÙBIZ@T}?†­˜@(úå)Eœ??±Ð¬×?l™>Òõ+}rR>…¿?4Úúú=rtüÊ*4<“Ä“Ë³å;¦B¶BÈ Å:bE$Ÿ²Á8é†îÑo6«•H*ŽÕ]4´•‹¯Èr1¹)¦…ìë=.Ë™ÿùÇñÉ+Ù)¦…ìë=)`ƒV|ˆ¢#2ß<äq°m I)¦…ìë=”‰)¦…ìë=‰y)¦…ìë=€’šh€é)¦…ìë=>Ã ÙCosmosSB/SB6_A_0  SB_calzetti_bump2?©™™™™™š?Û…¸Që‰<Î¸0ˆÛÀ3DŠ„«À3DŠ„«?Û…¸Që‰@Y¤@Y¤>k.ÜCosmosSB/SB2_A_0  SMC_prevot       ?Ì(õÂ�\+<ÿ0Ã¼ë7À“(S•œÜÀ“(S•œÜ?Ì(õÂ�\+
-Ur!U)_™éŽá0âx£ÏèèÓi!�¬¸Ðº+�ÿ?ÿŠÏô­JïR?[¸"04­rŽ›8u¬ñŸñ�8¬:Îwëö@XÿÿÿÿöØ½o?ÿÿÿô­5“µ¯È5u0ÿ?ÿÿÿô­.¾XÔq‚õ%rb”Jµ§'e;gË:°s/¢®úK¨{,¿?ÿÿÿô­1rXY;œ#Ôß}™.Òô‰?ÿÿÿô­…´šCèƒ›/ˆÚ0ÓÔñôÞÃ!D°¹´#÷Ë€ê7$÷óŽ0 p}?ÿÿÿô­y-Ï!+m
-Ur!U)_™éŽá0âx£ÏèèÓi!�¬¸Ðº+�ÿ?ÿŠÏô­JïR?[¸"04­rŽ›8u¬ñŸñ�8¬:Îwëö@XÿÿÿÿöØ½o?ÿÿÿô­5“µ¯È5u0ÿ?ÿÿÿô­.¾XÔq‚õ%rb”Jµ§'e;gË:°s/¢®úK¨{,¿?ÿÿÿô­1rXY;œ#Ôß}™.Òô‰?ÿÿÿô­…´šCèƒ›/ˆÚ0ÓÔñôÞÃ!D°¹´#÷Ë€ê7$÷óŽ0 p}?ÿÿÿô­y-Ï!+m?&"·CosmosSp/Sc_A_0   
SB_calzetti      ?Ã333333?åp£×
-=t<â\®÷^èÀx.¹s2VÀx.¹s2V?åp£×
-=t3]AR�¹
)´S‚ÐeøÏe�ÍëÜ�´ÔüT!Ò¼¾½ð-k&Ã[å})a–'ÇÀÙšœÿ'”Ê¹]
-ù'ðºÐK�†è*‚#ïÃ#,_«ÞA~�
-+X«–6H”)˜¡Fs¯'øÞ�ÉÉí³'À4úÕð+ûHh99.-,!B«g[Y,Ö9sKBÐ-½vd‹ÎŸ-»kŸ^-ª�ÿ<Mao,g7É´è¨v*7ù“žý6Ú)ôëµ@Yžæ*aXä;
o³)†
-R€7‰g(DÈ¤²#i)kÜH|¯c(¼�`K¢©ù>PN‹Ÿc$Æb©eÞî$J­)S{ŽPN‹ŸcLBì':G×)Ìhþ[¹uÉès!#áStrÅ ÚC…ºHã¹#äãº0,$GìLwåDÖ$"»Ó+˜<&7ìÇYëÑ&¡aµLŽ)#d×<WØ%v'?ÿìÿír&’´÷h5z	'1·ÒÄ„)oªr^—!Þ&~PNŒ'Ìh(ì0ýÅ®Qî*`fmJ§•‰,tAv²öëë.qZRð1@‚/�iàGu63^r±vl²ç2°c‡/€ÿ4è¤r°Æür4ŠiîËA\R6Ybö_
-mÁ7r…6óÛ3D7ý9{^ý†Ë7®!¡[5®±7îàXÕzq8w;$}Åß9¶^ý×‡m:bË›ljc:&rÙ ‚Õ:~zâ/Ê�;0w•CegÐ;Ù‡Ëµý¥;
-]èñäš;ÙÇß‰�=9¶!ª"»„l:|k{h!�t<g<E•ô‰<í¨>g¼¹K=¿‰Mèd'>�´»ò+�=ÛbÆ�Õ$C>Åˆ¿r‹=þãGË­9ª=Â5\&=Æ�?–r=„?j™�Ï~à?ÂxèÃh? ‡§Í¹w>£
}#=‚ˆ:µË®=ƒV,/b˜??Õº—È6U? ^ÄïlÇ@X@>ûÀ?ü †çÅ?ð….*U¢·?‡D
-‰`¸d>pe–ÒÞ€=ö¡µÄ µØ;é@emÝ@±9×À9q(·8²9ãL+7ù™tY/T6‘¢½”„ÇÇ7ëIŸ¡¦ü^7NÅ¿üÞfÜ6sýsò#‰›5�ŽUšbÊ%4™×ÈÕàø3]"¦|½5Z1ïÊäUõF0b½õèm»<.°?ªÂ¬,Ë#¶E“n*Öæ)IC(Å-j_Z¡V&š—“Ÿàó%?dµÒŽÂé$"Ìa©"ô\>w§f¼!Ä:Ø|Í ±¯þq<úlT^È³™	Ýø„]]�Ò!€ž¹´]ÆP7»OÓgÕ\[ó;y×åVâ˜Œ ?ÿ7U±vZa*´×5ÿý”¿®ÏÍÅð
p¼~×ßüQ°óBØ:/Ri©±Ä
-
-w´´kÖ)¾€ðãûM`Ù?Ÿÿ1õ+…Zqç`¶
í%µÌçd�ÔÛÓÎºÂ�ƒ	QŠ1ò¼ ëò}tn£Åã•JºëaÌZØ*® loÌ›ŽpT¿Œ¢˜y	°:ñk
-äÚö;0Üà©¿RløzédÍŒ:A~
Øÿ¼È XÆÎNd�2Ý»�jO®�€Ÿ1!9¦ÓÄ4¯NÜúB%?k`AŒ³œ¯ö¥K‡x£¢#ÅQIÜäñ<`­;[)ä�|U²�ÝYt±«Júù\ýÝ›'‚¸¹³`ò¬qý�Ÿ*¢AÌ�áu\q*/×c:W··eÞQ^îÿßJN%-k‡¹³ç?É˜"¨òÓp›mã®«'yì¥¶Pk‰·”©òæC>ÓìŸ)\æ9Ú7yÈ/p¤É¤ÓõísY<Éè´Y‚‘Î«E*ÂŸ|ô° [
-º§^ŸìyÛ#�X“-
ùíßr+œ
�z BÏvþQÏùŠ»GrÚ^	v%Ùw
â•1�Y¶“¯öN*
-Ó­Ë <
-Ja¡YÊ=+	§®®
Âþ	ÒYITELÕè%óä´Õkxpd“ŸdÏ0÷æTDFÕš’Ä„¯bÓÈbG ¬!dEY@¡P-¢•ºv¡Í%J®1‰Œ«Ü•0ui1¢Ð‹‡t-P�²£�
-ýÅÒO"«¡,7Ù{gñ4ÒŸP*PcÌ«rçmSÄ^3]AR�¹
)´S‚ÐeøÏe�ÍëÜ�´ÔüT!Ò¼¾½ð-k&Ã[å})a–'ÇÀÙšœÿ'”Ê¹]
-ù'ðºÐK�†è*‚#ïÃ#,_«ÞA~�
-+X«–6H”)˜¡Fs¯'øÞ�ÉÉí³'À4úÕð+ûHh99.-,!B«g[Y,Ö9sKBÐ-½vd‹ÎŸ-»kŸ^-ª�ÿ<Mao,g7É´è¨v*7ù“žý6Ú)ôëµ@Yžæ*aXä;
o³)†
-R€7‰g(DÈ¤²#i)kÜH|¯c(¼�`K¢©ù>PN‹Ÿc$Æb©eÞî$J­)S{ŽPN‹ŸcLBì':G×)Ìhþ[¹uÉès!#áStrÅ ÚC…ºHã¹#äãº0,$GìLwåDÖ$"»Ó+˜<&7ìÇYëÑ&¡aµLŽ)#d×<WØ%v'?ÿìÿír&’´÷h5z	'1·ÒÄ„)oªr^—!Þ&~PNŒ'Ìh(ì0ýÅ®Qî*`fmJ§•‰,tAv²öëë.qZRð1@‚/�iàGu63^r±vl²ç2°c‡/€ÿ4è¤r°Æür4ŠiîËA\R6Ybö_
-mÁ7r…6óÛ3D7ý9{^ý†Ë7®!¡[5®±7îàXÕzq8w;$}Åß9¶^ý×‡m:bË›ljc:&rÙ ‚Õ:~zâ/Ê�;0w•CegÐ;Ù‡Ëµý¥;
-]èñäš;ÙÇß‰�=9¶!ª"»„l:|k{h!�t<g<E•ô‰<í¨>g¼¹K=¿‰Mèd'>�´»ò+�=ÛbÆ�Õ$C>Åˆ¿r‹=þãGË­9ª=Â5\&=Æ�?–r=„?j™�Ï~à?ÂxèÃh? ‡§Í¹w>£
}#=‚ˆ:µË®=ƒV,/b˜??Õº—È6U? ^ÄïlÇ@X@>ûÀ?ü †çÅ?ð….*U¢·?‡D
-‰`¸d>pe–ÒÞ€=ö¡µÄ µØ;é@emÝ@±9×À9q(·8²9ãL+7ù™tY/T6‘¢½”„ÇÇ7ëIŸ¡¦ü^7NÅ¿üÞfÜ6sýsò#‰›5�ŽUšbÊ%4™×ÈÕàø3]"¦|½5Z1ïÊäUõF0b½õèm»<.°?ªÂ¬,Ë#¶E“n*Öæ)IC(Å-j_Z¡V&š—“Ÿàó%?dµÒŽÂé$"Ìa©"ô\>w§f¼!Ä:Ø|Í ±¯þq<úlT^È³™	Ýø„]]�Ò!€ž¹´]ÆP7»OÓgÕ\[ó;y×åVâ˜Œ ?ÿ7U±vZa*´×5ÿý”¿®ÏÍÅð
p¼~×ßüQ°óBØ:/Ri©±Ä
-
-w´´kÖ)¾€ðãûM`Ù?Ÿÿ1õ+…Zqç`¶
í%µÌçd�ÔÛÓÎºÂ�ƒ	QŠ1ò¼ ëò}tn£Åã•JºëaÌZØ*® loÌ›ŽpT¿Œ¢˜y	°:ñk
-äÚö;0Üà©¿RløzédÍŒ:A~
Øÿ¼È XÆÎNd�2Ý»�jO®�€Ÿ1!9¦ÓÄ4¯NÜúB%?k`AŒ³œ¯ö¥K‡x£¢#ÅQIÜäñ<`­;[)ä�|U²�ÝYt±«Júù\ýÝ›'‚¸¹³`ò¬qý�Ÿ*¢AÌ�áu\q*/×c:W··eÞQ^îÿßJN%-k‡¹³ç?É˜"¨òÓp›mã®«'yì¥¶Pk‰·”©òæC>ÓìŸ)\æ9Ú7yÈ/p¤É¤ÓõísY<Éè´Y‚‘Î«E*ÂŸ|ô° [
-º§^ŸìyÛ#�X“-
ùíßr+œ
�z BÏvþQÏùŠ»GrÚ^	v%Ùw
â•1�Y¶“¯öN*
-Ó­Ë <
-Ja¡YÊ=+	§®®
Âþ	ÒYITELÕè%óä´Õkxpd“ŸdÏ0÷æTDFÕš’Ä„¯bÓÈbG ¬!dEY@¡P-¢•ºv¡Í%J®1‰Œ«Ü•0ui1¢Ð‹‡t-P�²£�
-ýÅÒO"«¡,7Ù{gñ4ÒŸP*PcÌ«rçmSÄ^?RP\CosmosSB/SB5_A_0  SB_calzetti_bump2?Ù™™™™™š?í¸Që…$<õ,\³âÀ,ñÊÑ CÀ,ñÊÑ C?í¸Që…$-#¹™1¥¦-?4„\oã”-ã–†¬Ø“í.©´‰e`‘.í}€–%À/ÄPœÑûk/ŸÜ%}Ñû/$Ó4ß?y]/ÍGÒ…áÍú0¡:p1ëŠÜ1$ù-s`1$NÒ»·‘1¶¯¸ŽÞ8j2ûEé€Ð3éÙ\þ?‘47c,¤ÌÓ4tYÐ$ïÛ4ÓKCÉ¼áR6?Ío®˜6?ÍçÚˆq¯6#e'#¦7¯7Ó�i47à–›%ÖÒ9›¼9C–=:x‘ˆ/W3·;~©¸³aL¤<[x{ÞÒ>·<¹¿)™üÿâ=QVð°�âì=A]&gÔ=SˆÛd:3P=ÌFmË
 ={`ÉçyMø=Â	k6Û>1÷À¡#_>!«‘Or<>#Îc‚óÊ>©×º£™¿?UcŸ¾„E1?Š&^Øüòù?üG‡Mô`Ï?û£ÊAYú@)sR¾$cÓ?ëýVëw]á?Ð]N™Ìt<?îm@Ö|{í@K³aªA]ñ@é,a[_@0üf¢ä
-M?ÛY‰S�ïü?ä¶$_å?ê±šÎY
-?å
‘‚3?çõcg¬Lâ?–#âDLs?a{ÍŠšíw>ÛåfÌa>÷OSà¥©ß>{ØŸ–OÛk=ÐÒD­™<=&è`š-äf<<¤ü�;ôÍúÑ9æ‚ïùªt¹8FŽdêDÃd7†‘žd©#œ5}'­In©Â4Ùþ�,§3åÒF
-²ý3´ÇWn³B1«-†�š0¨E\^âé.Ü8§°èÉ-À’[iPiô+€2?))å‘*a'ßk]'ð]†æÉ™g&ê›ªúL5 $@:çãoï#dÍ
-"ˆ nKÑ‰dHi5"M0Im¤aMøüBñ,¦ ¿¶ò¡{mXÏõyƒØ@EÛ×ïtN\¬£;\±yÚ
3Œt1¼Qqr{²KKâu¢¿ŠÖƒÐe9
oÅAìNr¶Š‘Oås»ª
-´Aê˜˜ÞdDŠÛ—U¯iÆJ«ºÍY›Õjÿýê<˜Ð`µªt©élÅ_ã­éÝV$åÕ›£8ž›OÜ ßhÏ¥-ŽFdÜx÷VCJr#‹T	ØËµkÇºUÜ
-¿'ø&1õµ˜×ø$JœzI�8Êbn³[Vß‹3ÏYßNÍÎ+è�'ý†W�ÿNÄßmÌÍÏÇi›‚
ëÒaé¤äI¦ì˜- 5“Ý„"G»…õ)Ce,ííT·x]£­·Ì¤^8òŠâÅo×ù?fÍË²ž�h¤[‹î<‘‡µÑû¼Ž‘²}ê�Ö¡wï|¶Jºe"ryôÎ®Yg‘úð}Úc^³ÒýõICÝóçêE»·Ù¬CkÀ‡°²å'iK:äz±uxlWàE~ñª#f½e!™5ô/[â¤1 P Ð=(g)]ÆåkÇªƒH—;-x®+…¯Ð‘¦ôÏ¢¤1A{ø„<¤’)"¦¨Æ‹ ÂFü�Azy�„ûÓž¨Úõ¥NNÞï†à°_ùrµìmEü?«‡ É+~B&U-#¹™1¥¦-?4„\oã”-ã–†¬Ø“í.©´‰e`‘.í}€–%À/ÄPœÑûk/ŸÜ%}Ñû/$Ó4ß?y]/ÍGÒ…áÍú0¡:p1ëŠÜ1$ù-s`1$NÒ»·‘1¶¯¸ŽÞ8j2ûEé€Ð3éÙ\þ?‘47c,¤ÌÓ4tYÐ$ïÛ4ÓKCÉ¼áR6?Ío®˜6?ÍçÚˆq¯6#e'#¦7¯7Ó�i47à–›%ÖÒ9›¼9C–=:x‘ˆ/W3·;~©¸³aL¤<[x{ÞÒ>·<¹¿)™üÿâ=QVð°�âì=A]&gÔ=SˆÛd:3P=ÌFmË
 ={`ÉçyMø=Â	k6Û>1÷À¡#_>!«‘Or<>#Îc‚óÊ>©×º£™¿?UcŸ¾„E1?Š&^Øüòù?üG‡Mô`Ï?û£ÊAYú@)sR¾$cÓ?ëýVëw]á?Ð]N™Ìt<?îm@Ö|{í@K³aªA]ñ@é,a[_@0üf¢ä
-M?ÛY‰S�ïü?ä¶$_å?ê±šÎY
-?å
‘‚3?çõcg¬Lâ?–#âDLs?a{ÍŠšíw>ÛåfÌa>÷OSà¥©ß>{ØŸ–OÛk=ÐÒD­™<=&è`š-äf<<¤ü�;ôÍúÑ9æ‚ïùªt¹8FŽdêDÃd7†‘žd©#œ5}'­In©Â4Ùþ�,§3åÒF
-²ý3´ÇWn³B1«-†�š0¨E\^âé.Ü8§°èÉ-À’[iPiô+€2?))å‘*a'ßk]'ð]†æÉ™g&ê›ªúL5 $@:çãoï#dÍ
-"ˆ nKÑ‰dHi5"M0Im¤aMøüBñ,¦ ¿¶ò¡{mXÏõyƒØ@EÛ×ïtN\¬£;\±yÚ
3Œt1¼Qqr{²KKâu¢¿ŠÖƒÐe9
oÅAìNr¶Š‘Oås»ª
-´Aê˜˜ÞdDŠÛ—U¯iÆJ«ºÍY›Õjÿýê<˜Ð`µªt©élÅ_ã­éÝV$åÕ›£8ž›OÜ ßhÏ¥-ŽFdÜx÷VCJr#‹T	ØËµkÇºUÜ
-¿'ø&1õµ˜×ø$JœzI�8Êbn³[Vß‹3ÏYßNÍÎ+è�'ý†W�ÿNÄßmÌÍÏÇi›‚
ëÒaé¤äI¦ì˜- 5“Ý„"G»…õ)Ce,ííT·x]£­·Ì¤^8òŠâÅo×ù?fÍË²ž�h¤[‹î<‘‡µÑû¼Ž‘²}ê�Ö¡wï|¶Jºe"ryôÎ®Yg‘úð}Úc^³ÒýõICÝóçêE»·Ù¬CkÀ‡°²å'iK:äz±uxlWàE~ñª#f½e!™5ô/[â¤1 P Ð=(g)]ÆåkÇªƒH—;-x®+…¯Ð‘¦ôÏ¢¤1A{ø„<¤’)"¦¨Æ‹ ÂFü�Azy�„ûÓž¨Úõ¥NNÞï†à°_ùrµìmEü?«‡ É+~B&U>þ–CosmosSB/SB2_A_0  SB_calzetti      ?©™™™™™š?Ýp£×
-=u<ÀO«ÁÖumÀ€!ú—À€!ú—?Ýp£×
-=u
\ No newline at end of file
diff --git a/ElementsExamples/auxdir/ElementsExamples/tests/conf/CppProgramExample.conf b/ElementsExamples/auxdir/ElementsExamples/tests/conf/CppProgramExample.conf
deleted file mode 100644
index 15fa1208..00000000
--- a/ElementsExamples/auxdir/ElementsExamples/tests/conf/CppProgramExample.conf
+++ /dev/null
@@ -1,9 +0,0 @@
-string-option = "A_String_From_Config_File"
-int-option = 4
-int-option-with-default-and-default-in-conf = 777
-int-option-no-default-not-defined-in-conf = 555
-int-option-with-default-no-default-in-conf = 888
-double-option = 3.14
-int-vector-option = 17
-int-vector-option = 41
-int-vector-option = 77
\ No newline at end of file
diff --git a/ElementsExamples/auxdir/ElementsExamples/tests/conf/PythonProgramExample.conf b/ElementsExamples/auxdir/ElementsExamples/tests/conf/PythonProgramExample.conf
deleted file mode 100644
index 4fa782a8..00000000
--- a/ElementsExamples/auxdir/ElementsExamples/tests/conf/PythonProgramExample.conf
+++ /dev/null
@@ -1,7 +0,0 @@
-string-option = "A_String_From_Config_File"
-int-option = 4
-int-option-with-default-and-default-in-conf = 777
-int-option-no-default-not-defined-in-conf = 555
-int-option-with-default-no-default-in-conf = 888
-float-option = 3.14
-int-list-option = 17 41 77
diff --git a/ElementsExamples/conf/CppProgramExample.conf b/ElementsExamples/conf/CppProgramExample.conf
deleted file mode 100644
index 5746e3a6..00000000
--- a/ElementsExamples/conf/CppProgramExample.conf
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# Configuration file for the exampleCppProgram executable.
-#
-# It includes all program options specific to this program.
-# The generic options are provided by the system.
-#
-#######################################################
-#
-#  Specific options
-#
-int-option = 3
-string-option = "A_String_From_Config_File"
-long-long-option = 3
-double-option = 3.14
-int-option-with-default-and-default-in-conf = 333
-int-vector-option = 17
-int-vector-option = 41
-int-vector-option = 77
-threshold=0.8
diff --git a/ElementsExamples/conf/ElementsExamples/PythonProgramExample.conf b/ElementsExamples/conf/ElementsExamples/PythonProgramExample.conf
deleted file mode 100644
index 6daec212..00000000
--- a/ElementsExamples/conf/ElementsExamples/PythonProgramExample.conf
+++ /dev/null
@@ -1,6 +0,0 @@
-string-option = "A_String_From_Config_File"
-int-option = 3
-int-option-with-default-and-default-in-conf = 333
-float-option = 3.14
-int-list-option = 17 41 77
-threshold=0.8
\ No newline at end of file
diff --git a/ElementsExamples/doc/ElementsExamples.dox b/ElementsExamples/doc/ElementsExamples.dox
deleted file mode 100644
index 7252ee13..00000000
--- a/ElementsExamples/doc/ElementsExamples.dox
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
-@defgroup ElementsExamples ElementsExamples: Programming Examples Module
-@brief    Various examples to create executables, libraries, python modules etc
-*/
diff --git a/ElementsExamples/doc/doc_module.rst b/ElementsExamples/doc/doc_module.rst
deleted file mode 100644
index d361832b..00000000
--- a/ElementsExamples/doc/doc_module.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-Module Overview <----------------- TO BE WRITTEN ------------------------>
-==========================================================================
-
-.. important:: Please edit ./ElementsExamples/doc/doc_module.rst to replace this section.
-
-.. The following sections can be replaced or updated. 
-   You may also use a toctree directive for sub documents. 
-
-Introduction
-------------
-
-Purpose of this Elements Module.
-
-What does it do?
-
-Architecture overview
----------------------
-
-Highlevel overview of the Module.
-
-How is it done?
-
-  1. List of packages
-  2. Explanation of used design patterns
-  3. Useful UML diagrams: UML Package, UML Structure and Deployment, UML Use Case
\ No newline at end of file
diff --git a/ElementsExamples/python/ElementsExamples/PyBind11ProgramExample.py b/ElementsExamples/python/ElementsExamples/PyBind11ProgramExample.py
deleted file mode 100644
index c33a9c61..00000000
--- a/ElementsExamples/python/ElementsExamples/PyBind11ProgramExample.py
+++ /dev/null
@@ -1,79 +0,0 @@
-#
-# Copyright (C) 2012-2020 Euclid Science Ground Segment
-#
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 3.0 of the License, or (at your option)
-# any later version.
-#
-# This library 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 Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-""" Small example for pybind11
-
-"""
-
-import argparse
-import numpy as np
-
-from ElementsKernel import Logging
-from ElementsKernel import Exit
-
-from testCallBack import test  # pylint: disable=no-name-in-module,import-error
-
-
-def norm(x):
-    """ function to return the norm of a scalar or a vector
-    """
-
-    n = 0
-
-    if np.isscalar(x):
-        n = x
-    else:
-        n = np.sqrt((np.asarray(x) ** 2).sum())
-
-    return n
-
-
-def defineSpecificProgramOptions():
-    """ Allows to define the (command line and configuration file) options specific to
-    this program. See the ElementsProgram documentation for more details.
-
-    :return: An  ArgumentParser.
-    """
-    parser = argparse.ArgumentParser()
-
-    return parser
-
-
-def mainMethod(args):  # pylint: disable=unused-argument
-    """ The "main" method.
-    This method is the entry point to the program. In this sense, it is similar to a main
-    (and it is why it is called mainMethod()). The code below contains the calls to the
-    different classes created for the first developer's workshop. See the ElementsProgram
-    documentation for more details.
-    """
-    logger = Logging.getLogger('PyBind11ProgramExample')
-    logger.info('Entering PyBind11ProgramExample mainMethod()')
-
-    logger.info('Testing callback with an input tuple')
-
-    x = [1., 2.]
-    test(x, norm)
-
-    logger.info('Testing callback with an input array')
-
-    x = np.array([1., 2.])
-    test(x, norm)
-
-    logger.info('Exiting PyBind11ProgramExample mainMethod()')
-
-    return Exit.Code["OK"]
diff --git a/ElementsExamples/python/ElementsExamples/PythonModuleExample.py b/ElementsExamples/python/ElementsExamples/PythonModuleExample.py
deleted file mode 100644
index 981239fd..00000000
--- a/ElementsExamples/python/ElementsExamples/PythonModuleExample.py
+++ /dev/null
@@ -1,58 +0,0 @@
-#
-# Copyright (C) 2012-2020 Euclid Science Ground Segment
-#
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 3.0 of the License, or (at your option)
-# any later version.
-#
-# This library 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 Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-""" Small example for a python module
-
-"""
-
-
-import ElementsKernel.Logging as log
-
-class ClassExample(object):
-    """
-    This is an example of the most basic Python class
-    """
-    logger = log.getLogger('ClassExample')
-    def __init__(self, my_list):
-        """
-        Constructor
-        """
-        self._m_i = 5
-        self._m_list = my_list
-
-    def sumListValues(self):
-        """
-        Method summing the elements of the list
-        """
-        my_sum = 0
-        for element in self._m_list:
-            my_sum += element
-        return my_sum
-
-
-    @staticmethod
-    def product(first, second):
-        """
-        This is an example static method
-
-        :param first: The first number
-        :param second: The second number
-
-        :return: The product of the two numbers
-        """
-        return first * second
diff --git a/ElementsExamples/python/ElementsExamples/PythonProgramExample.py b/ElementsExamples/python/ElementsExamples/PythonProgramExample.py
deleted file mode 100644
index 4c6f16d4..00000000
--- a/ElementsExamples/python/ElementsExamples/PythonProgramExample.py
+++ /dev/null
@@ -1,168 +0,0 @@
-#
-# Copyright (C) 2012-2020 Euclid Science Ground Segment
-#
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 3.0 of the License, or (at your option)
-# any later version.
-#
-# This library 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 Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-
-""" Small example for a python based script
-
-"""
-
-import argparse
-from ElementsKernel import Logging
-from ElementsKernel.Program import str_to_bool
-from ElementsExamples.PythonModuleExample import ClassExample
-
-from ElementsKernel import Exit
-
-
-def myLocalLogTestFunc():
-    """ example of logging from a function
-    """
-
-    logger = Logging.getLogger()
-    logger.info("Test of Message")
-
-    logger2 = Logging.getLogger("TestLogger")
-    logger2.info("Test2 of Message")
-
-    logger3 = Logging.getLogger(__name__)
-    logger3.info("Test3 of Message")
-
-
-def defineSpecificProgramOptions():
-    """ Allows to define the (command line and configuration file) options specific to
-    this program. See the ElementsProgram documentation for more details.
-
-    :return: An  ArgumentParser.
-    """
-    parser = argparse.ArgumentParser()
-
-    parser.add_argument(
-        '--string-option',
-        type=str,
-        help='A string example option'
-    )
-
-    parser.add_argument(
-        '--int-option',
-        type=int,
-        default=111,
-        help='An int example option'
-    )
-
-    parser.add_argument(
-        '--int-option-with-default-and-default-in-conf',
-        type=int,
-        default=222,
-        help='A string example option'
-    )
-
-    parser.add_argument(
-        '--int-option-with-default-no-default-in-conf',
-        type=int,
-        default=444,
-        help='A string example option'
-    )
-
-    parser.add_argument(
-        '--int-option-no-default-not-defined-in-conf',
-        type=int,
-        help='A string example option'
-    )
-
-    parser.add_argument(
-        '--int-option-with-no-defaults-anywhere',
-        type=int,
-        help='A string example option'
-    )
-
-    parser.add_argument(
-        '--float-option',
-        type=float,
-        default=99999.0,
-        help='A float option'
-    )
-
-    parser.add_argument(
-        '--int-list-option',
-        nargs='+',
-        type=int,
-        default=[-1, -2, 9],
-        help='A integer list option'
-    )
-
-    parser.add_argument(
-        '--overwrite',
-        nargs='?',
-        dest='overwrite',
-        default=False,
-        const=True,
-        type=str_to_bool,
-        help='Overwrite the output files'
-    )
-
-    parser.add_argument(
-        '--threshold', '-t',
-        type=float,
-        default=0.5,
-        help="signal threshold")
-
-    return parser
-
-
-def mainMethod(args):
-    """ The "main" method.
-    This method is the entry point to the program. In this sense, it is similar to a main
-    (and it is why it is called mainMethod()). The code below contains the calls to the
-    different classes created for the first developer's workshop
-
-        See the ElementsProgram documentation for more details.
-    """
-    logger = Logging.getLogger('ProgramExample')
-    logger.info('Entering ProgramExample mainMethod()')
-
-    #
-    #  function with log messages
-    #
-    myLocalLogTestFunc()
-
-    #
-    #  Log some of the arguments
-    #
-    string_from_configuration = args.string_option
-    logger.info('Example string : %s', string_from_configuration)
-    second_element = args.int_list_option[1]
-    logger.info('Second elements from the list : %s', str(second_element))
-
-    logger.info("the int_option value %d", args.int_option)
-    logger.info("the threshold value %.1f", args.threshold)
-
-    #
-    #  Calling a static method
-    #
-    result = ClassExample.product(3, 4)
-    logger.info('Static method result : %s', str(result))
-
-    #
-    #  Calling the constructor and a method member
-    #
-    example_object = ClassExample(args.int_list_option)
-    logger.info('Sum of the list elements : %s', str(example_object.sumListValues()))
-
-    logger.info('Exiting ProgramExample mainMethod()')
-
-    return Exit.Code["OK"]
diff --git a/ElementsExamples/python/ElementsExamples/PythonTestProgramExample.py b/ElementsExamples/python/ElementsExamples/PythonTestProgramExample.py
deleted file mode 100644
index e70598bd..00000000
--- a/ElementsExamples/python/ElementsExamples/PythonTestProgramExample.py
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# Copyright (C) 2012-2020 Euclid Science Ground Segment
-#
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 3.0 of the License, or (at your option)
-# any later version.
-#
-# This library 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 Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-
-""" Small example for a python based script
-
-"""
-
-import argparse
-from ElementsKernel import Logging, Exit
-
-
-def defineSpecificProgramOptions():
-    """ Allows to define the (command line and configuration file) options specific to
-    this program. See the ElementsProgram documentation for more details.
-
-    :return: An  ArgumentParser.
-    """
-    parser = argparse.ArgumentParser()
-
-    return parser
-
-
-def mainMethod(args): #pylint: disable=unused-argument
-    """ The "main" method.
-    This method is the entry point to the program. In this sense, it is similar to a main
-    (and it is why it is called mainMethod()). The code below contains the calls to the
-    different classes created for the first developer's workshop. See the ElementsProgram
-    documentation for more details.
-    """
-    logger = Logging.getLogger('TestProgramExample')
-    logger.info('Entering TestProgramExample mainMethod()')
-
-    logger.info('Exiting TestProgramExample mainMethod()')
-
-    return Exit.Code["OK"]
diff --git a/ElementsExamples/python/ElementsExamples/SpawnExample.py b/ElementsExamples/python/ElementsExamples/SpawnExample.py
deleted file mode 100644
index a3c67913..00000000
--- a/ElementsExamples/python/ElementsExamples/SpawnExample.py
+++ /dev/null
@@ -1,76 +0,0 @@
-#
-# Copyright (C) 2012-2020 Euclid Science Ground Segment
-#
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 3.0 of the License, or (at your option)
-# any later version.
-#
-# This library 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 Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-""" Small example for a python based script using multiprocessing
-
-"""
-
-import argparse
-import multiprocessing
-import time
-import ElementsKernel.Logging as log
-
-
-def worker_func(i):
-
-    logger = log.getLogger('SpawnTest')
-    logger.info("Hello from %d", i)
-
-
-def defineSpecificProgramOptions():
-    """
-    @brief Allows to define the (command line and configuration file) options
-    specific to this program
-
-    @details See the Elements documentation for more details.
-    @return An  ArgumentParser.
-    """
-
-    parser = argparse.ArgumentParser()
-
-    #
-    # !!! Write your program options here !!!
-    # e.g. parser.add_argument('--string-value', type=str, help='A string option')
-    #
-
-    return parser
-
-
-def mainMethod(args):
-    """
-    @brief The "main" method.
-
-    @details This method is the entry point to the program. In this sense, it is
-    similar to a main (and it is why it is called mainMethod()).
-    """
-
-    logger = log.getLogger('SpawnTest')
-
-    logger.info('#')
-    logger.info('# Entering SpawnTest mainMethod()')
-    logger.info('#')
-
-    num_procs = 4
-    time.sleep(2)
-
-    with multiprocessing.get_context("spawn").Pool(num_procs) as p:
-        p.map(worker_func, [i for i in range(num_procs)])
-
-    logger.info('#')
-    logger.info('# Exiting SpawnTest mainMethod()')
-    logger.info('#')
diff --git a/ElementsExamples/python/ElementsExamples/SwigProgramExample.py b/ElementsExamples/python/ElementsExamples/SwigProgramExample.py
deleted file mode 100644
index c76359c1..00000000
--- a/ElementsExamples/python/ElementsExamples/SwigProgramExample.py
+++ /dev/null
@@ -1,65 +0,0 @@
-#
-# Copyright (C) 2012-2020 Euclid Science Ground Segment
-#
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 3.0 of the License, or (at your option)
-# any later version.
-#
-# This library 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 Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-
-""" Small example for a python based script
-"""
-
-import argparse
-import ElementsKernel.Logging as log
-from ElementsKernel import Exit
-
-from SwigExample import functionExample
-
-
-def defineSpecificProgramOptions():
-    """ Allows to define the (command line and configuration file) options specific to
-    this program. See the ElementsProgram documentation for more details.
-
-    :return: An  ArgumentParser.
-    """
-    parser = argparse.ArgumentParser()
-
-    parser.add_argument('--int-option', type=int,
-                        help='An int example option')
-
-    return parser
-
-def mainMethod(args):
-    """ The "main" method.
-    This method is the entry point to the program. In this sense, it is similar to a main
-    (and it is why it is called mainMethod()). The code below contains the calls to the
-    different classes created for the first developer's workshop. See the ElementsProgram
-    documentation for more details.
-    """
-    logger = log.getLogger('SwigProgramExample')
-    logger.info('Entering SwigProgramExample mainMethod()')
-
-    #
-    #  Log some of the arguments
-    #
-    int_from_configuration = args.int_option
-    if not int_from_configuration:
-        int_from_configuration = 9
-    logger.info('Example int : %d', int_from_configuration)
-    func_result = functionExample(int_from_configuration)
-    logger.info('functionExample(%d) : %d', int_from_configuration, func_result)
-
-    logger.info('Exiting SwigProgramExample mainMethod()')
-
-    return Exit.Code["OK"]
diff --git a/ElementsExamples/python/ElementsExamples/__init__.py b/ElementsExamples/python/ElementsExamples/__init__.py
deleted file mode 100644
index 799fd827..00000000
--- a/ElementsExamples/python/ElementsExamples/__init__.py
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# Copyright (C) 2012-2020 Euclid Science Ground Segment
-#
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 3.0 of the License, or (at your option)
-# any later version.
-#
-# This library 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 Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-""" Definition of a python package using extend_path
-    to create a namespace
-"""
-
-
-from pkgutil import extend_path
-__path__ = extend_path(__path__, __name__)  # @ReservedAssignment
diff --git a/ElementsExamples/scripts/OptionPrecedence_test b/ElementsExamples/scripts/OptionPrecedence_test
deleted file mode 100755
index e45f63d7..00000000
--- a/ElementsExamples/scripts/OptionPrecedence_test
+++ /dev/null
@@ -1,184 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (C) 2012-2020 Euclid Science Ground Segment
-# 
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 3.0 of the License, or (at your option)
-# any later version.
-# 
-# This library 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 Lesser General Public License for more
-# details.
-# 
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-
-home_dir=${PWD}
-
-
-# Create unique directory
-tmploc=$(mktemp -dq -t temp.XXXXXX)
-
-# Clean and exit
-local_clean_exit() {
-  cd ${home_dir}
-  rm -rf ${tmploc}
-  exit $1
-}
-
-cd ${tmploc} || local_clean_exit 1
-
-##############################################################################
-# C++
-
-# regular run
-CppProgramExample
-if [ $? -ne 0 ]; then
-  echo "Error: <CppProgramExample> failed" 1>&2
-  local_clean_exit 1
-fi
-
-# there is no hardcoded default, thus the config file value has to be used
-CppProgramExample 2>&1 | grep -i "The int-option value is 3$"
-if [ $? -ne 0 ]; then
-  echo "Error: <CppProgramExample> failed: the int-option value is not 3" 1>&2
-  local_clean_exit 1
-fi
-
-# cross-check that the grep is working
-CppProgramExample 2>&1 | grep -i "The int-option value is 4$"
-if [ $? -eq 0 ]; then
-  echo "Error: <CppProgramExample> failed: the int-option value is 4" 1>&2
-  local_clean_exit 1
-fi
-
-# pass value on the command line
-CppProgramExample --int-option=5 2>&1 | grep -i "The int-option value is 5$"
-if [ $? -ne 0 ]; then
-  echo "Error: <CppProgramExample> failed: the int-option value is not 5" 1>&2
-  local_clean_exit 1
-fi
-
-# pass value on the command line with a space instead of an "="
-CppProgramExample --int-option 5 2>&1 | grep -i "The int-option value is 5$"
-if [ $? -ne 0 ]; then
-  echo "Error: <CppProgramExample> failed: the int-option value is not 5" 1>&2
-  local_clean_exit 1
-fi
-
-# there is an hardcoded value set to 0.5 that should be overridden by the config
-# file that contains the 0.8 value.
-expected_threshold="0.8"
-CppProgramExample 2>&1 | grep -i "The threshold value is ${expected_threshold}$"
-if [ $? -ne 0 ]; then
-  echo "Error: <CppProgramExample> failed: the threshold value is not ${expected_threshold}" 1>&2
-  local_clean_exit 1
-fi
-not_expected_threshold="0.5"
-CppProgramExample 2>&1 | grep -i "The threshold value is ${not_expected_threshold}$"
-if [ $? -eq 0 ]; then
-  echo "Error: <CppProgramExample> failed: the threshold value is ${not_expected_threshold}" 1>&2
-  local_clean_exit 1
-fi
-
-# pass value on the command line. Must override both others.
-expected_threshold="0.9"
-CppProgramExample --threshold=${expected_threshold} 2>&1 | grep -i "The threshold value is ${expected_threshold}$"
-if [ $? -ne 0 ]; then
-  echo "Error: <CppProgramExample> failed: the threshold value is not ${expected_threshold}" 1>&2
-  local_clean_exit 1
-fi
-
-# pass value on the command line. Must override both others. Use space instead of "="
-expected_threshold="0.9"
-CppProgramExample --threshold ${expected_threshold} 2>&1 | grep -i "The threshold value is ${expected_threshold}$"
-if [ $? -ne 0 ]; then
-  echo "Error: <CppProgramExample> failed: the threshold value is not ${expected_threshold}" 1>&2
-  local_clean_exit 1
-fi
-
-##############################################################################
-# Python
-
-# regular run
-PythonProgramExample
-if [ $? -ne 0 ]; then
-  echo "Error: <PythonProgramExample> failed" 1>&2
-  local_clean_exit 1
-fi
-
-# there is no hardcoded default, thus the config file value has to be used
-PythonProgramExample 2>&1 | grep -i "the int_option value 3$"
-if [ $? -ne 0 ]; then
-  echo "Error: <PythonProgramExample> failed: the int_option value is not 3" 1>&2
-  local_clean_exit 1
-fi
-
-# cross-check that the grep is working
-PythonProgramExample 2>&1 | grep -i "the int_option value 4$"
-if [ $? -eq 0 ]; then
-  echo "Error: <PythonProgramExample> failed: the int_option value is 4" 1>&2
-  local_clean_exit 1
-fi
-
-# pass value on the command line
-PythonProgramExample --int-option=5 2>&1 | grep -i "the int_option value 5$"
-if [ $? -ne 0 ]; then
-  echo "Error: <PythonProgramExample> failed: the int_option value is not 5" 1>&2
-  local_clean_exit 1
-fi
-
-# pass value on the command line. Use space instead of "="
-PythonProgramExample --int-option 5 2>&1 | grep -i "the int_option value 5$"
-if [ $? -ne 0 ]; then
-  echo "Error: <PythonProgramExample> failed: the int_option value is not 5" 1>&2
-  local_clean_exit 1
-fi
-
-# there is an hardcoded value set to 0.5 that should be overridden by the config
-# file that contains the 0.8 value.
-expected_threshold="0.8"
-PythonProgramExample 2>&1 | grep -i "the threshold value ${expected_threshold}$"
-if [ $? -ne 0 ]; then
-  echo "Error: <PythonProgramExample> failed: the threshold value is not ${expected_threshold}" 1>&2
-  local_clean_exit 1
-fi
-not_expected_threshold="0.5"
-PythonProgramExample 2>&1 | grep -i "the threshold value ${not_expected_threshold}$"
-if [ $? -eq 0 ]; then
-  echo "Error: <PythonProgramExample> failed: the threshold value is ${not_expected_threshold}" 1>&2
-  local_clean_exit 1
-fi
-
-# pass value on the command line. Must override both others.
-expected_threshold="0.9"
-PythonProgramExample --threshold=${expected_threshold} 2>&1 | grep -i "the threshold value ${expected_threshold}$"
-if [ $? -ne 0 ]; then
-  echo "Error: <PythonProgramExample> failed: the threshold value is not ${expected_threshold}" 1>&2
-  local_clean_exit 1
-fi
-
-# pass value on the command line. Must override both others. Use space instead of "=".
-expected_threshold="0.9"
-PythonProgramExample --threshold ${expected_threshold} 2>&1 | grep -i "the threshold value ${expected_threshold}$"
-if [ $? -ne 0 ]; then
-  echo "Error: <PythonProgramExample> failed: the threshold value is not ${expected_threshold}" 1>&2
-  local_clean_exit 1
-fi
-
-# pass value on the command line. Must override both others. Use short option.
-expected_threshold="0.9"
-PythonProgramExample -t ${expected_threshold} 2>&1 | grep -i "the threshold value ${expected_threshold}$"
-if [ $? -ne 0 ]; then
-  echo "Error: <PythonProgramExample> failed: the threshold value is not ${expected_threshold}" 1>&2
-  local_clean_exit 1
-fi
-
-
-local_clean_exit 0
diff --git a/ElementsExamples/scripts/ScriptThatChecksFile_test b/ElementsExamples/scripts/ScriptThatChecksFile_test
deleted file mode 100755
index 27d219ca..00000000
--- a/ElementsExamples/scripts/ScriptThatChecksFile_test
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (C) 2012-2020 Euclid Science Ground Segment
-# 
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 3.0 of the License, or (at your option)
-# any later version.
-# 
-# This library 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 Lesser General Public License for more
-# details.
-# 
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-
-pwd
-
-touch output.out
-
-if [ -f output.out ]; then
-  # performs clean up before exiting
-  rm -f output.out
-  exit 0
-else
-  exit 1
-fi
-
diff --git a/ElementsExamples/scripts/ScriptThatFails_test b/ElementsExamples/scripts/ScriptThatFails_test
deleted file mode 100755
index 2ad481e9..00000000
--- a/ElementsExamples/scripts/ScriptThatFails_test
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (C) 2012-2020 Euclid Science Ground Segment
-# 
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 3.0 of the License, or (at your option)
-# any later version.
-# 
-# This library 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 Lesser General Public License for more
-# details.
-# 
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-
-exit 1
diff --git a/ElementsExamples/scripts/ScriptThatGivesError_test b/ElementsExamples/scripts/ScriptThatGivesError_test
deleted file mode 100755
index d762c071..00000000
--- a/ElementsExamples/scripts/ScriptThatGivesError_test
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (C) 2012-2020 Euclid Science Ground Segment
-# 
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 3.0 of the License, or (at your option)
-# any later version.
-# 
-# This library 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 Lesser General Public License for more
-# details.
-# 
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-
-echo "This is a good output."
-echo "This a bad output."
-
-exit 0
diff --git a/ElementsExamples/scripts/ScriptThatGivesOutput_test b/ElementsExamples/scripts/ScriptThatGivesOutput_test
deleted file mode 100755
index fbfc6262..00000000
--- a/ElementsExamples/scripts/ScriptThatGivesOutput_test
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (C) 2012-2020 Euclid Science Ground Segment
-# 
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 3.0 of the License, or (at your option)
-# any later version.
-# 
-# This library 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 Lesser General Public License for more
-# details.
-# 
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-
-echo "This is a good output."
-
-
-exit 0
diff --git a/ElementsExamples/scripts/ScriptThatGivesStdError_test b/ElementsExamples/scripts/ScriptThatGivesStdError_test
deleted file mode 100755
index d54b4727..00000000
--- a/ElementsExamples/scripts/ScriptThatGivesStdError_test
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (C) 2012-2020 Euclid Science Ground Segment
-# 
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 3.0 of the License, or (at your option)
-# any later version.
-# 
-# This library 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 Lesser General Public License for more
-# details.
-# 
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-
-echo "This is a good output."
-echo "This a bad output."
-echo "This is a worse output." 1>&2
-
-exit 0
diff --git a/ElementsExamples/scripts/ScriptThatSucceeds_test b/ElementsExamples/scripts/ScriptThatSucceeds_test
deleted file mode 100755
index a8ad4f41..00000000
--- a/ElementsExamples/scripts/ScriptThatSucceeds_test
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (C) 2012-2020 Euclid Science Ground Segment
-# 
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 3.0 of the License, or (at your option)
-# any later version.
-# 
-# This library 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 Lesser General Public License for more
-# details.
-# 
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-
-exit 0
diff --git a/ElementsExamples/scripts/UnrecognizedOption_test b/ElementsExamples/scripts/UnrecognizedOption_test
deleted file mode 100755
index c225a6f5..00000000
--- a/ElementsExamples/scripts/UnrecognizedOption_test
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (C) 2012-2020 Euclid Science Ground Segment
-# 
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 3.0 of the License, or (at your option)
-# any later version.
-# 
-# This library 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 Lesser General Public License for more
-# details.
-# 
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-home_dir=${PWD}
-
-
-# Create unique directory
-tmploc=$(mktemp -dq -t temp.XXXXXX)
-
-# Clean and exit
-local_clean_exit() {
-  cd ${home_dir}
-  rm -rf ${tmploc}
-  exit $1
-}
-
-cd ${tmploc} || local_clean_exit 1
-
-# regular run
-CppProgramExample
-if [ $? -ne 0 ]; then
-  echo "Error: <CppProgramExample> failed" 1>&2
-  local_clean_exit 1
-fi
-
-# regular run with known option
-CppProgramExample -f
-if [ $? -ne 0 ]; then
-  echo "Error: <CppProgramExample -f> failed" 1>&2
-  local_clean_exit 1
-fi
-
-# regular run with unknown option
-CppProgramExample --toto
-if [ $? -ne 64 ]; then
-  echo "Error: <CppProgramExample --toto> succeeded" 1>&2
-  local_clean_exit 1
-fi
-
-# regular run
-PythonProgramExample
-if [ $? -ne 0 ]; then
-  echo "Error: <PythonProgramExample> failed" 1>&2
-  local_clean_exit 1
-fi
-
-# regular run with known option
-PythonProgramExample --overwrite
-if [ $? -ne 0 ]; then
-  echo "Error: <PythonProgramExample --overwrite> failed" 1>&2
-  local_clean_exit 1
-fi
-
-# regular run with unknown option
-PythonProgramExample --toto
-if [ $? -eq 0 ]; then
-  echo "Error: <PythonProgramExample --toto> succeeded" 1>&2
-  local_clean_exit 1
-fi
-
-local_clean_exit 0
diff --git a/ElementsExamples/src/CProgram/cutout.c b/ElementsExamples/src/CProgram/cutout.c
deleted file mode 100644
index 830586ef..00000000
--- a/ElementsExamples/src/CProgram/cutout.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * @file cutout.c
- *
- * @date Oct 13, 2016
- * @author hubert
- *
- * @date January 9, 2015
- * @author Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-
-#include <stdio.h>
-
-#include "ElementsExamples/util.h"
-
-
-int main(int argc, char *argv[]) {
-
-    printf("This is a constant: %d\n", MY_CONST);
-    printf("This is the function result: %d\n", myFunc());
-
-    return 0;
-}
-
diff --git a/ElementsExamples/src/Cython/lib/PiCalculator.pyx b/ElementsExamples/src/Cython/lib/PiCalculator.pyx
deleted file mode 100644
index dcf2cef8..00000000
--- a/ElementsExamples/src/Cython/lib/PiCalculator.pyx
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# Copyright (C) 2012-2020 Euclid Science Ground Segment
-# 
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 3.0 of the License, or (at your option)
-# any later version.
-# 
-# This library 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 Lesser General Public License for more
-# details.
-# 
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-cdef extern from "ElementsExamples/PiCalculator.h" namespace "Elements::Examples":
-    cdef cppclass PiCalculator:
-        void calculate(unsigned int terms) nogil
-        void setShowResultCallback(void * callback)
-
-cdef void show_result_callback(double pi) with gil:
-    print(float(pi))
-
-def print_pi(terms):
-    cdef PiCalculator pi_calc
-    pi_calc.setShowResultCallback(&show_result_callback)
-    cdef unsigned int terms_int = terms
-    with nogil:
-        pi_calc.calculate(terms_int)
diff --git a/ElementsExamples/src/Cython/lib/Rect.pyx b/ElementsExamples/src/Cython/lib/Rect.pyx
deleted file mode 100644
index 13f370d3..00000000
--- a/ElementsExamples/src/Cython/lib/Rect.pyx
+++ /dev/null
@@ -1,42 +0,0 @@
-#
-# Copyright (C) 2012-2020 Euclid Science Ground Segment
-# 
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 3.0 of the License, or (at your option)
-# any later version.
-# 
-# This library 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 Lesser General Public License for more
-# details.
-# 
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-cimport ElementsExamples.CRectangle
-
-from ElementsExamples cimport CRectangle
-
-cdef class Rectangle:
-
-    def __cinit__(self, int x0, int y0, int x1, int y1):
-#         self.thisptr = new ElementsExamples.c_rectangle.Rectangle(x0, y0, x1, y1)
-        self.thisptr = new CRectangle.Rectangle(x0, y0, x1, y1)
-
-    def __dealloc__(self):
-        del self.thisptr
-
-    cpdef getLength(self):
-        return self.thisptr.getLength()
-
-    cpdef getHeight(self):
-        return self.thisptr.getHeight()
-
-    cpdef getArea(self):
-        return self.thisptr.getArea()
-
-    cpdef move(self, dx, dy):
-        self.thisptr.move(dx, dy)
diff --git a/ElementsExamples/src/lib/default/ClassExample.cpp b/ElementsExamples/src/lib/default/ClassExample.cpp
deleted file mode 100644
index c4a341d3..00000000
--- a/ElementsExamples/src/lib/default/ClassExample.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * @file ClassExample.cpp
- *
- * @date January 9, 2015
- * @author Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include "ElementsExamples/ClassExample.h"
-
-#include <cmath>    // for std::abs
-#include <cstdint>  // for std::int64_t
-#include <memory>   // for unique_ptr
-#include <string>   // for string
-#include <vector>   // for vector
-
-#include "ElementsKernel/Exception.h"
-#include "ElementsKernel/Unused.h"
-
-using std::vector;
-
-namespace Elements {
-namespace Examples {
-
-const std::string ClassExample::s_static_string = "This is a static field example";
-
-double ClassExample::fundamentalTypeMethod(const double input_variable) const {
-  return input_variable;
-}
-
-/*
- * This is a silly example just to have a method throwing an exception
- */
-double ClassExample::divideNumbers(const double first, const double second) const {
-  double tolerance = 1e-12;
-  if (std::abs(second) < tolerance) {
-    throw Elements::Exception() << "Dividing by " << second << " exception in ClassExample::divideNumbers(...)";
-  }
-  return first / second;
-}
-
-void ClassExample::passingUniquePointer(std::unique_ptr<vector<double>> vector_unique_ptr) const {
-  ELEMENTS_UNUSED auto vect_size = vector_unique_ptr->size();
-}
-
-void ClassExample::passingObjectInGeneral(const vector<double>& input_object) const {
-  ELEMENTS_UNUSED auto object_size = input_object.size();
-}
-
-ClassExample ClassExample::factoryMethod(const std::int64_t source_id, const double ra) {
-  return ClassExample{source_id, ra};
-}
-
-}  // namespace Examples
-}  // namespace Elements
diff --git a/ElementsExamples/src/lib/default/DataSourceUser.cpp b/ElementsExamples/src/lib/default/DataSourceUser.cpp
deleted file mode 100644
index dd551bf8..00000000
--- a/ElementsExamples/src/lib/default/DataSourceUser.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * @file DataSourceUser.cpp
- *
- * @date Sep 23, 2015
- * @author Florian Dubath
- *
- *  * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include "ElementsExamples/DataSourceUser.h"
-
-#include <cstdlib>  // for size_t
-
-namespace Elements {
-namespace Examples {
-
-double DataSourceUser::sumRecords(const DataSourceInterface& data_source) {
-
-  using std::size_t;
-
-  double sum = 0.;
-
-  size_t records_number = data_source.countRecords();
-  for (size_t index = 0; index < records_number; ++index) {
-    sum += data_source.getRecordValue(index);
-  }
-
-  return sum;
-}
-
-}  // namespace Examples
-}  // namespace Elements
diff --git a/ElementsExamples/src/lib/default/ModuleInfo.cpp b/ElementsExamples/src/lib/default/ModuleInfo.cpp
deleted file mode 100644
index 5552eff3..00000000
--- a/ElementsExamples/src/lib/default/ModuleInfo.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * @file ElementsExamples/src/lib/default/ModuleInfo.cpp
- *
- * @date Feb 12, 2015
- * @author hubert
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "ElementsExamples/ModuleInfo.h"
-
-#include "ElementsKernel/ThisModule.h"
-
-namespace Elements {
-namespace Examples {
-
-const System::ModuleInfo& getModuleInfo() {
-
-  return System::getThisModuleInfo();
-}
-
-}  // namespace Examples
-}  // namespace Elements
diff --git a/ElementsExamples/src/lib/default/PiCalculator.cpp b/ElementsExamples/src/lib/default/PiCalculator.cpp
deleted file mode 100644
index 5170d3f3..00000000
--- a/ElementsExamples/src/lib/default/PiCalculator.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * @file ElementsExamples/src/lib/default/PiCalculator.cpp
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "ElementsExamples/PiCalculator.h"
-
-namespace Elements {
-namespace Examples {
-
-void PiCalculator::calculate(unsigned int terms) {
-
-  double pi = 0.0;
-  // Leibniz formula for pi
-  double numerator   = -1.0;
-  double denominator = -1.0;
-
-  for (unsigned int ii = 0; ii < terms; ++ii) {
-    numerator *= -1;
-    denominator += 2.0;
-    pi += numerator / denominator;
-  }
-
-  pi *= 4.0;
-
-  m_show_result_callback(pi);
-}
-
-void PiCalculator::setShowResultCallback(show_result_callback_type f) {
-
-  m_show_result_callback = f;
-}
-
-}  // namespace Examples
-}  // namespace Elements
diff --git a/ElementsExamples/src/lib/default/Rectangle.cpp b/ElementsExamples/src/lib/default/Rectangle.cpp
deleted file mode 100644
index 43e1cf8c..00000000
--- a/ElementsExamples/src/lib/default/Rectangle.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * @file ElementsExamples/src/lib/default/Rectangle.cpp
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "ElementsExamples/Rectangle.h"
-
-namespace Elements {
-namespace Examples {
-
-Rectangle::Rectangle(int X0, int Y0, int X1, int Y1) {
-  x0 = X0;
-  y0 = Y0;
-  x1 = X1;
-  y1 = Y1;
-}
-
-Rectangle::~Rectangle() {}
-
-int Rectangle::getLength() {
-  return (x1 - x0);
-}
-
-int Rectangle::getHeight() {
-  return (y1 - y0);
-}
-
-int Rectangle::getArea() {
-  return (x1 - x0) * (y1 - y0);
-}
-
-void Rectangle::move(int dx, int dy) {
-  x0 += dx;
-  y0 += dy;
-  x1 += dx;
-  y1 += dy;
-}
-
-}  // namespace Examples
-}  // namespace Elements
diff --git a/ElementsExamples/src/lib/default/SwigClassExample.cpp b/ElementsExamples/src/lib/default/SwigClassExample.cpp
deleted file mode 100644
index 8635bd75..00000000
--- a/ElementsExamples/src/lib/default/SwigClassExample.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * @file SwigClassExample.cpp
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include "ElementsExamples/SwigClassExample.h"
-
-namespace Elements {
-namespace Examples {
-
-double SwigClassExample::getRa() const {
-  return m_ra;
-}
-
-double SwigClassExample::getDec() const {
-  return m_dec;
-}
-
-}  // namespace Examples
-}  // namespace Elements
diff --git a/ElementsExamples/src/lib/default/UnitTestExample.cpp b/ElementsExamples/src/lib/default/UnitTestExample.cpp
deleted file mode 100644
index 24d5b4f8..00000000
--- a/ElementsExamples/src/lib/default/UnitTestExample.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * @file UnitTestExample.cpp
- *
- * @date Sep 22, 2015
- * @author Florian Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include "ElementsExamples/UnitTestExample.h"
-
-#include <algorithm>  // sort
-#include <numeric>    // accumulate
-#include <vector>     // vector
-
-#include "ElementsKernel/Exception.h"
-
-using std::vector;
-
-namespace Elements {
-namespace Examples {
-
-double UnitTestExample::average(const vector<int>& v) {
-
-  double result = 0.0;
-  auto   size   = v.size();
-  // Throw an exception if the number of vector elements is null!
-  if (size == 0) {
-    throw Exception() << "Input vector has no element!";  // can be removed to feed a unit test exercise
-  }
-
-  // We check if we have enough numbers to compute the median
-  // if (size - 5 > 0) { // example mistake to feed a unit test exercise
-  if (size > 5) {
-    //
-    vector<int> ordered{v.begin(), v.end()};
-    std::sort(ordered.begin(), ordered.end());
-    if (size % 2 == 0) {
-      result = (ordered[size / 2 - 1] + ordered[size / 2]) / 2.;
-    } else {
-      result = ordered[size / 2];
-    }
-
-  } else {
-    // If we have less than 5 numbers we compute the mean
-    // auto sum = std::accumulate(v.begin(), v.end(), 0);  // example mistake to feed a unit test exercise
-    auto sum = std::accumulate(v.begin(), v.end(), 0.);  // example mistake to feed a unit test exercise
-
-    result = static_cast<double>(sum) / static_cast<double>(size);
-  }
-
-  return result;
-}
-
-}  // namespace Examples
-}  // namespace Elements
diff --git a/ElementsExamples/src/lib/default/callBackExample.cpp b/ElementsExamples/src/lib/default/callBackExample.cpp
deleted file mode 100644
index 0671af95..00000000
--- a/ElementsExamples/src/lib/default/callBackExample.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * @file callBackExample.cpp
- *
- * @date Apr 1, 2020
- * @author Hubert Degaudenzi
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <functional>  // for function
-#include <vector>      // for vector
-
-#include "ElementsKernel/Logging.h"  // for Logging
-
-#include "ElementsExamples/callBackExample.h"
-
-using std::vector;
-
-namespace Elements {
-namespace Examples {
-
-double testCallBack(vector<double> x, const std::function<double(vector<double>)>& fun) {
-
-  auto log = Logging::getLogger("ElementsExamples");
-
-  log.info() << "Calling the Python function from C++";
-
-  double f = fun(x);
-
-  log.info() << "The value of the function is " << f;
-
-  log.info() << "Returning the result";
-
-  return (f);
-}
-
-}  // namespace Examples
-}  // namespace Elements
diff --git a/ElementsExamples/src/lib/default/crashingFunction.cpp b/ElementsExamples/src/lib/default/crashingFunction.cpp
deleted file mode 100644
index 844370c6..00000000
--- a/ElementsExamples/src/lib/default/crashingFunction.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * @file crashingFunction.cpp
- *
- * @date Nov 15, 2016
- * @author hubert
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include "ElementsExamples/crashingFunction.h"
-
-#include <stdexcept>  // for the logic_error
-
-#include "ElementsKernel/Logging.h"  // for the Logging
-
-namespace Elements {
-namespace Examples {
-
-void crashingFunction() {
-  auto log = Logging::getLogger("ElementsExamples");
-  log.info() << "Entering Crashing Function";
-
-  throw std::logic_error("arrg!");
-}
-
-}  // namespace Examples
-}  // namespace Elements
diff --git a/ElementsExamples/src/lib/default/functionExample.cpp b/ElementsExamples/src/lib/default/functionExample.cpp
deleted file mode 100644
index 0ee1f7f0..00000000
--- a/ElementsExamples/src/lib/default/functionExample.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * @file functionExample.cpp
- *
- * @date Feb 16, 2016
- * @author Hubert Degaudenzi
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include "ElementsExamples/functionExample.h"
-
-namespace Elements {
-namespace Examples {
-
-int functionExample(const int j) {
-  return j * j;
-}
-
-}  // namespace Examples
-}  // namespace Elements
diff --git a/ElementsExamples/src/lib/default/util.c b/ElementsExamples/src/lib/default/util.c
deleted file mode 100644
index 52760306..00000000
--- a/ElementsExamples/src/lib/default/util.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * @file util.c
- *
- * @date Oct 13, 2016
- * @author hubert
- *
- * @date January 9, 2015
- * @author Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include "ElementsExamples/util.h"
-
-int MY_CONST = 42;
-
-int myFunc() {
-  return 1;
-}
diff --git a/ElementsExamples/src/lib/other/ClassExample2.cpp b/ElementsExamples/src/lib/other/ClassExample2.cpp
deleted file mode 100644
index d4dafd5d..00000000
--- a/ElementsExamples/src/lib/other/ClassExample2.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * @file ClassExample2.cpp
- *
- * @date January 9, 2015
- * @author Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include "ElementsExamples/ClassExample2.h"
-
-#include <cmath>    // for std::abs
-#include <cstdint>  // for std::int64_t
-#include <memory>   // for unique_ptr
-#include <string>   // for string
-#include <vector>   // for vector
-
-#include "ElementsKernel/Exception.h"
-#include "ElementsKernel/Unused.h"
-
-using std::vector;
-
-namespace Elements {
-namespace Examples {
-
-std::string ClassExample2::s_static_string = "This is a static field example";
-
-double ClassExample2::fundamentalTypeMethod(const double input_variable) const {
-  return input_variable;
-}
-
-/*
- * This is a silly example just to have a method throwing an exception
- */
-double ClassExample2::divideNumbers(const double first, const double second) const {
-  double tolerance = 1e-12;
-  if (std::abs(second) < tolerance) {
-    throw Elements::Exception() << "Dividing by " << second << " exception in ClassExample2::divideNumbers(...)";
-  }
-  return first / second;
-}
-
-void ClassExample2::passingUniquePointer(std::unique_ptr<vector<double>> vector_unique_ptr) const {
-  ELEMENTS_UNUSED auto vect_size = vector_unique_ptr->size();
-}
-
-void ClassExample2::passingObjectInGeneral(const vector<double>& input_object) const {
-  ELEMENTS_UNUSED auto object_size = input_object.size();
-}
-
-ClassExample2 ClassExample2::factoryMethod(const std::int64_t source_id, const double ra) {
-  return ClassExample2{source_id, ra};
-}
-
-}  // namespace Examples
-}  // namespace Elements
diff --git a/ElementsExamples/src/lib/other/functionExample2.cpp b/ElementsExamples/src/lib/other/functionExample2.cpp
deleted file mode 100644
index f8909256..00000000
--- a/ElementsExamples/src/lib/other/functionExample2.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * @file functionExample2.cpp
- *
- * @date Feb 16, 2016
- * @author Hubert Degaudenzi
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include "ElementsExamples/functionExample2.h"
-
-namespace Elements {
-namespace Examples {
-
-int functionExample2(const int j) {
-  return j * j;
-}
-
-}  // namespace Examples
-}  // namespace Elements
diff --git a/ElementsExamples/src/lib/other/printProject.cpp b/ElementsExamples/src/lib/other/printProject.cpp
deleted file mode 100644
index 57e6986d..00000000
--- a/ElementsExamples/src/lib/other/printProject.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * @file printProject.cpp
- *
- * @date May 14, 2020
- * @author Hubert Degaudenzi
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <iostream>
-
-#include "ElementsKernel/Project.h"  // for Project
-
-#include "ElementsExamples/printProject.h"
-
-namespace Elements {
-namespace Examples {
-
-void printProject() {
-  std::cout << Project() << std::endl;
-}
-
-}  // namespace Examples
-}  // namespace Elements
diff --git a/ElementsExamples/src/program/AnotherSimpleProgram.cpp b/ElementsExamples/src/program/AnotherSimpleProgram.cpp
deleted file mode 100644
index 630deab9..00000000
--- a/ElementsExamples/src/program/AnotherSimpleProgram.cpp
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * @file AnotherSimpleProgram.cpp
- *
- * @date Dec 23, 2019
- * @author Hubert Degaudenzi
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <iostream>
-
-#include "ElementsKernel/Exception.h"  // For Exception
-#include "ElementsKernel/Exit.h"       // For ExitCode
-#include "ElementsKernel/SimpleProgram.h"
-
-namespace Elements {
-namespace Examples {
-
-/**
- * @class AnotherSimpleProgram
- * @brief
- *    Example of an Elements program
- * @details
- *    This class is an example of a program based on the SimpleProgram class. It can be copied/pasted
- *    conveniently to write a new program.
- */
-class AnotherSimpleProgram : public SimpleProgram {
-
-public:
-  void defineOptions() override {}
-
-  /**
-   * @brief
-   *    The "main" method.
-   * @details
-   *    This method is the entry point to the program. In this sense, it is similar to a main
-   *    (and it is why it is called main()). The code below provides only example stuff
-   *    which should be replaced by real code in any program.
-   *
-   *    See the SimpleProgram documentation for more details.
-   *
-   */
-  ExitCode main() override {
-
-    std::cout << "Program name: " << getProgramName() << std::endl;
-    std::cout << "Program path: " << getProgramPath() << std::endl;
-
-    throw Exception("This is an example exception.");
-
-    return ExitCode::OK;
-  }
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-MAIN(Elements::Examples::AnotherSimpleProgram)
diff --git a/ElementsExamples/src/program/BackTrace.cpp b/ElementsExamples/src/program/BackTrace.cpp
deleted file mode 100644
index 0771a4f3..00000000
--- a/ElementsExamples/src/program/BackTrace.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * @file BackTrace.cpp
- * @date January 6th, 2015
- * @author Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <map>        // for map
-#include <stdexcept>  // for standard exceptions
-#include <string>     // for string
-
-#include "ElementsExamples/crashingFunction.h"  // for crashingFunction
-
-#include "ElementsKernel/ProgramHeaders.h"  // for including all Program/related headers
-#include "ElementsKernel/Unused.h"          // for ELEMENTS_UNUSED
-
-using std::map;
-using std::string;
-
-namespace Elements {
-namespace Examples {
-
-auto log = Logging::getLogger("BackTraceExample");
-
-void secondLevelFunction() {
-  log.info() << "Entering Second Level Function";
-  crashingFunction();
-}
-
-void firstLevelFunction() {
-  log.info() << "Entering First Level Function";
-  secondLevelFunction();
-}
-
-class BackTrace : public Program {
-
-public:
-  ExitCode mainMethod(ELEMENTS_UNUSED map<string, VariableValue>& args) override {
-
-    firstLevelFunction();
-
-    log.info() << "done with test program! ";
-
-    return ExitCode::OK;
-  }
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-/**
- * Implementation of a main using a base class macro
- * This must be present in all Elements programs
- */
-MAIN_FOR(Elements::Examples::BackTrace)
diff --git a/ElementsExamples/src/program/CCfits.cpp b/ElementsExamples/src/program/CCfits.cpp
deleted file mode 100644
index 64b8127c..00000000
--- a/ElementsExamples/src/program/CCfits.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * @file CCfits.cpp
- * @date January 6th, 2015
- * @author Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <map>     // for map
-#include <string>  // for string
-
-#include <CCfits/CCfits>  // header file to test
-
-#include "ElementsKernel/Auxiliary.h"
-#include "ElementsKernel/ProgramHeaders.h"  // for including all Program/related headers
-#include "ElementsKernel/Unused.h"          // for ELEMENTS_UNUSED
-
-using std::map;
-using std::string;
-
-namespace Elements {
-namespace Examples {
-
-class CCfits : public Program {
-
-public:
-  ExitCode mainMethod(ELEMENTS_UNUSED map<string, VariableValue>& args) override {
-
-    auto log = Logging::getLogger("CCfits");
-
-    string test_upper_string{"THATSTRING"};
-    log.info() << "This is the test upper string: " << test_upper_string;
-
-    string test_lower_string = ::CCfits::FITSUtil::lowerCase(test_upper_string);
-    log.info() << "This is the test lower string: " << test_lower_string;
-
-    log.info() << "done with test program! ";
-
-    auto fits_file_path = Auxiliary::getPath("ElementsExamples/phz_cat.fits");
-    log.info() << "Opening the file " << fits_file_path.string();
-    ::CCfits::FITS fits_file(fits_file_path.string());
-
-    ::CCfits::ExtHDU& extension = fits_file.extension(1);
-
-    log.info() << "Extension comments: " << extension.getComments();
-
-    return ExitCode::OK;
-  }
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-/**
- * Implementation of a main using a base class macro
- * This must be present in all Elements programs
- */
-MAIN_FOR(Elements::Examples::CCfits)
diff --git a/ElementsExamples/src/program/Cfitsio.cpp b/ElementsExamples/src/program/Cfitsio.cpp
deleted file mode 100644
index 4392ccdc..00000000
--- a/ElementsExamples/src/program/Cfitsio.cpp
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * @file Cfitsio.cpp
- * @date January 6th, 2015
- * @author Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <map>     // for map
-#include <string>  // for string
-
-#include <fitsio.h>
-
-#include "ElementsKernel/ProgramHeaders.h"  // for including all Program/related headers
-#include "ElementsKernel/Unused.h"          // for ELEMENTS_UNUSED
-
-using std::map;
-using std::string;
-
-namespace Elements {
-namespace Examples {
-
-class Cfitsio : public Program {
-
-public:
-  ExitCode mainMethod(ELEMENTS_UNUSED map<string, VariableValue>& args) override {
-
-    auto log = Logging::getLogger("CfitsioExample");
-
-    int a = fits_is_reentrant();
-
-    log.info() << "Cfitsio is reentrant: " << a;
-
-    log.info() << "done with test program! ";
-
-    return ExitCode::OK;
-  }
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-/**
- * Implementation of a main using a base class macro
- * This must be present in all Elements programs
- */
-MAIN_FOR(Elements::Examples::Cfitsio)
diff --git a/ElementsExamples/src/program/Eigen.cpp b/ElementsExamples/src/program/Eigen.cpp
deleted file mode 100644
index abdc3878..00000000
--- a/ElementsExamples/src/program/Eigen.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * @file Eigen.cpp
- * @date January 6th, 2015
- * @author Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <iostream>
-
-#include <map>     // for map
-#include <string>  // for string
-
-#include <Eigen/Dense>
-
-#include "ElementsKernel/ProgramHeaders.h"  // for including all Program/related headers
-#include "ElementsKernel/Unused.h"          // for ELEMENTS_UNUSED
-
-using std::map;
-using std::string;
-
-namespace Elements {
-namespace Examples {
-
-class Eigen : public Program {
-
-public:
-  ExitCode mainMethod(ELEMENTS_UNUSED map<string, VariableValue>& args) override {
-
-    using ::Eigen::MatrixXd;
-
-    auto log = Logging::getLogger("EigenExample");
-
-    MatrixXd m(2, 2);
-    m(0, 0) = 3;
-    m(1, 0) = 2.5;
-    m(0, 1) = -1;
-    m(1, 1) = m(1, 0) + m(0, 1);
-    std::cout << m << std::endl;
-
-    log.info() << "This is the end of the test";
-
-    return ExitCode::OK;
-  }
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-/**
- * Implementation of a main using a base class macro
- * This must be present in all Elements programs
- */
-MAIN_FOR(Elements::Examples::Eigen)
diff --git a/ElementsExamples/src/program/ExtProgram.cpp b/ElementsExamples/src/program/ExtProgram.cpp
deleted file mode 100644
index 1413ebe6..00000000
--- a/ElementsExamples/src/program/ExtProgram.cpp
+++ /dev/null
@@ -1,217 +0,0 @@
-/**
- * @file ExtProgram.cpp
- * @date January 6th, 2015
- * @author Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <cstdint>  // for int64_t
-#include <map>      // for map
-#include <memory>   // for unique_ptr
-#include <string>   // for string
-#include <utility>  // for move
-#include <vector>   // for vector
-
-#include "ElementsExamples/ClassExample.h"
-#include <boost/current_function.hpp>  // for BOOST_CURRENT_FUNCTION
-#include <boost/program_options.hpp>   // for program options from configuration file of command line arguments
-
-#include "ElementsKernel/Module.h"          // for Module
-#include "ElementsKernel/ProgramHeaders.h"  // for including all Program/related headers
-#include "ElementsKernel/Project.h"         // for Project
-#include "ElementsKernel/ThisModule.h"      // for getThisExecutableInfo
-
-#include "ElementsExamples/functionExample.h"
-#include "ElementsExamples/printProject.h"
-
-using std::map;
-using std::string;
-using std::vector;
-
-using boost::program_options::bool_switch;
-using boost::program_options::value;
-
-using std::int64_t;
-
-/**
- * @class ExtProgram
- * @brief
- *    Simple example of an Elements program outside of the Elements namespace
- * @details
- *    All C++ executable must extend the Elements::Program base class
- *
- */
-class ExtProgram : public Elements::Program {
-
-public:
-  /**
-   * @brief
-   *    Allows to define the (command line and configuration file) options specific to
-   *    this program
-   * @details
-   *    See the ElementsProgram documentation for more details.
-   * @return
-   *    A BOOST program options_description
-   */
-  OptionsDescription defineSpecificProgramOptions() override {
-
-    OptionsDescription config_options{"Example program options"};
-    auto               add = config_options.add_options();
-
-    bool flag = false;
-
-    // Add the specific program options
-    add("int-option", value<int>()->default_value(int{111}), "An example int option");
-    add("int-option-with-default-and-default-in-conf", value<int>()->default_value(int{222}), "An example int option");
-    add("int-option-with-default-no-default-in-conf", value<int>()->default_value(int{444}), "An example int option");
-    add("int-option-no-default-not-defined-in-conf", value<int>(), "An example int option");
-    add("int-option-with-no-defaults-anywhere", value<int>(), "An example int option");
-    add("string-option", value<string>()->default_value(string{}), "An example string option");
-    add("boolean-option", value<bool>()->default_value(false), "An example boolean option");
-    add("flag,f", bool_switch(&flag), "An option to set to true");
-    add("string-option-no-default", value<string>(), "A string option without default value");
-    add("long-long-option", value<int64_t>()->default_value(int64_t{}), "An example long long option");
-    add("double-option", value<double>()->default_value(double{}), "An example double option");
-    add("int-vector-option", value<vector<int>>()->multitoken()->default_value(vector<int>{}, "Empty"),
-        "An example vector option");
-    add("threshold,t", value<double>()->default_value(double{0.5}), "An example double option");
-
-    return config_options;
-  }
-
-  /**
-   * @brief
-   *    The "main" method.
-   * @details
-   *    This method is the entry point to the program. In this sense, it is similar to a main
-   *    (and it is why it is called mainMethod()). The code below contains the calls to the
-   *    different classes created for the first developer's workshop
-   *
-   *    See the ElementsProgram documentation for more details.
-   *
-   */
-  ExitCode mainMethod(map<string, VariableValue>& args) override {
-
-    using Elements::Examples::ClassExample;
-
-    auto log = Logging::getLogger("ExtProgram");
-    log.info("Entering mainMethod()");
-    log.info("#");
-    /*
-     * Check availability of mandatory program arguments (or options)
-     *
-     * Arguments values may come from
-     *  1) the default value provided in above defineSpecificProgramOptions()
-     *  2) the configuration file
-     *  3) the command line
-     *
-     *  If an none of the three options provide any values for a mandatory
-     *  argument, you should check if your option has any values following the
-     *  below example. Note that this may happen for all options without default
-     *  values.
-     */
-    if (args["string-option-no-default"].empty()) {
-      log.info() << "No value are available for string-option-no-default";
-      /*
-       * An exception may be thrown her if the above option is mandatory and there
-       * is no way to continue without value
-       */
-    }
-    /*
-     * Get and log one of the program arguments (or options)
-     *
-     * The string-option has a default empty string value, so that it can always be
-     * printed event as an empty string
-     */
-    string string_example{args["string-option"].as<string>()};
-    log.info() << "String option value: " << string_example;
-
-    log.info() << "The int-option value is " << args["int-option"].as<int>();
-    log.info() << "The threshold value is " << args["threshold"].as<double>();
-
-    // Some initialization
-    double  input_variable = 3.4756;
-    int64_t source_id      = 12345;
-    double  ra             = 45.637;
-
-    // Factory method example
-    ClassExample example_class_object = ClassExample::factoryMethod(source_id, ra);
-
-    /*
-     * All fundamental type variables can be copied forth and back without significant
-     * cost in (almost) all cases
-     */
-    double method_result = example_class_object.fundamentalTypeMethod(input_variable);
-    log.info() << "Some result: " << method_result;
-
-    double first = 1.0;
-    double division_result{};
-    try {
-      log.info("#");
-      log.info("#   Calling a method throwing an exception ");
-      log.info("#");
-      double second   = 0.0;
-      division_result = example_class_object.divideNumbers(first, second);
-      //
-    } catch (const Elements::Exception& e) {
-      log.info("#");
-      log.info() << e.what();
-      log.info("#");
-      log.info("#   In this silly example we continue with a fake fix ");
-      log.info("#");
-      division_result = example_class_object.divideNumbers(first, 0.000001);
-    }
-    log.info() << "Second result is: " << division_result;
-
-    /*
-     * Illustration on how best to use smart pointer (regular pointer should not
-     * be used anymore). The move() indicate that the ownership of the pointer is given to the
-     * method called. The vector_unique_ptr cannot be used in this method anymore after the
-     * call.
-     */
-    std::unique_ptr<vector<double>> vector_unique_ptr{new vector<double>{1.0, 2.3, 4.5}};
-    example_class_object.passingUniquePointer(std::move(vector_unique_ptr));
-
-    /*
-     * Illustration on how best to pass any object. The passingObjectInGeneral() is taking
-     * a reference to this object.
-     */
-    vector<double> object_example{vector<double>{1.0, 2.3, 4.5}};
-    example_class_object.passingObjectInGeneral(object_example);
-
-    log.info() << "Function Example: " << Elements::Examples::functionExample(3);
-
-    log.info() << "This executable name: " << Elements::System::getThisExecutableInfo().name();
-
-    Elements::Examples::printProject();
-
-    log.info() << Elements::Project();
-    log.info() << "Project Name: " << Elements::Project::name();
-    log.info() << "Project Version: " << Elements::Project::versionString();
-    log.info() << "Module Name: " << Elements::Module::name();
-    log.info() << "Module Version: " << Elements::Module::versionString();
-
-    log.info("#");
-    log.info("Exiting mainMethod()");
-    return ExitCode::OK;
-  }
-};
-
-/**
- * Implementation of a main using a base class macro
- * This must be present in all Elements programs
- */
-MAIN_FOR(ExtProgram)
diff --git a/ElementsExamples/src/program/Fftw.cpp b/ElementsExamples/src/program/Fftw.cpp
deleted file mode 100644
index ea0924da..00000000
--- a/ElementsExamples/src/program/Fftw.cpp
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- * @file Fftw.cpp
- * @date January 6th, 2015
- * @author Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <cmath>  // for cos
-#include <cstdio>
-#include <map>     // for map
-#include <string>  // for string
-
-#include <boost/format.hpp>  // for format
-
-#include <fftw3.h>
-
-#include "ElementsKernel/MathConstants.h"   // for pi
-#include "ElementsKernel/ProgramHeaders.h"  // for including all Program/related headers
-#include "ElementsKernel/Unused.h"          // for ELEMENTS_UNUSED
-
-using std::map;
-using std::string;
-
-constexpr std::size_t N = 32;
-
-namespace Elements {
-namespace Examples {
-
-class Fftw : public Program {
-
-public:
-  ExitCode mainMethod(ELEMENTS_UNUSED map<string, VariableValue>& args) override {
-
-    auto log = Logging::getLogger("FftwExample");
-
-    fftw_complex in[N]; /* double [2] */
-    fftw_complex out[N];
-    fftw_complex in2[N];
-    fftw_plan    p;
-    fftw_plan    q;
-
-    using std::cos;
-
-    /* prepare a cosine wave */
-    for (size_t i = 0; i < N; i++) {
-      in[i][0] = cos(3.0 * 2.0 * Units::pi * static_cast<double>(i) / static_cast<double>(N));
-      in[i][1] = 0;
-    }
-
-    /* forward Fourier transform, save the result in 'out' */
-    p = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
-    fftw_execute(p);
-    for (size_t i = 0; i < N; i++) {
-      log.info() << boost::format("freq: %3d %+9.5f %+9.5f I") % i % out[i][0] % out[i][1];
-    }
-    fftw_destroy_plan(p);
-
-    /* backward Fourier transform, save the result in 'in2' */
-    printf("\nInverse transform:\n");
-    q = fftw_plan_dft_1d(N, out, in2, FFTW_BACKWARD, FFTW_ESTIMATE);
-    fftw_execute(q);
-    /* normalize */
-    for (size_t i = 0; i < N; i++) {
-      in2[i][0] *= 1. / N;
-      in2[i][1] *= 1. / N;
-    }
-    for (size_t i = 0; i < N; i++) {
-      log.info() << boost::format("recover: %3d %+9.5f %+9.5f I vs. %+9.5f %+9.5f I") % i % in[i][0] % in[i][1] %
-                        in2[i][0] % in2[i][1];
-    }
-    fftw_destroy_plan(q);
-
-    fftw_cleanup();
-
-    log.info() << "This is the end of the test";
-
-    return ExitCode::OK;
-  }
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-/**
- * Implementation of a main using a base class macro
- * This must be present in all Elements programs
- */
-MAIN_FOR(Elements::Examples::Fftw)
diff --git a/ElementsExamples/src/program/FloatPrecision.cpp b/ElementsExamples/src/program/FloatPrecision.cpp
deleted file mode 100644
index 83d05c02..00000000
--- a/ElementsExamples/src/program/FloatPrecision.cpp
+++ /dev/null
@@ -1,218 +0,0 @@
-/**
- * @file FloatPrecision.cpp
- * @date October 30th, 2018
- * @author Hubert Degaudenzi
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <iomanip>   // for setprecision
-#include <iostream>  // for cout, endl
-#include <limits>    // the templated version of the <cfloat> header
-#include <map>       // for map
-#include <string>    // for string
-                     // it exposes numeric_limits
-#include <cmath>     // for nextafter
-
-#include <boost/format.hpp>                       // for format
-#include <boost/math/constants/constants.hpp>     // for pi
-#include <boost/math/special_functions/next.hpp>  // for float_next
-
-#include "ElementsKernel/ProgramHeaders.h"  // for including all Program/related headers
-#include "ElementsKernel/Unused.h"          // for ELEMENTS_UNUSED
-
-using std::cout;
-using std::endl;
-using std::map;
-using std::string;
-
-namespace Elements {
-namespace Examples {
-
-constexpr int PRINT_PRECISION = 32;
-
-template <typename T>
-void printTitle() {
-  cout << "================================================================================" << endl;
-  cout << "Float:" << endl;
-  cout << "--------------------------------------------------------------------------------" << endl;
-}
-
-template <>
-void printTitle<double>() {
-  cout << "================================================================================" << endl;
-  cout << "Double:" << endl;
-  cout << "--------------------------------------------------------------------------------" << endl;
-}
-
-template <>
-void printTitle<long double>() {
-  cout << "================================================================================" << endl;
-  cout << "Long Double:" << endl;
-  cout << "--------------------------------------------------------------------------------" << endl;
-}
-
-template <typename T>
-constexpr T Zero() {
-  return 0.0f;
-}
-
-template <>
-constexpr double Zero<double>() {
-  return 0.0;
-}
-
-template <>
-constexpr long double Zero<long double>() {
-  return 0.0l;
-}
-
-template <typename T>
-constexpr T One() {
-  return 1.0f;
-}
-
-template <>
-constexpr double One<double>() {
-  return 1.0;
-}
-
-template <>
-constexpr long double One<long double>() {
-  return 1.0l;
-}
-
-template <typename T>
-constexpr T Two() {
-  return 2.0f;
-}
-
-template <>
-constexpr double Two<double>() {
-  return 2.0;
-}
-
-template <>
-constexpr long double Two<long double>() {
-  return 2.0l;
-}
-
-template <typename T>
-constexpr T Seven() {
-  return 7.0f;
-}
-
-template <>
-constexpr double Seven<double>() {
-  return 7.0;
-}
-
-template <>
-constexpr long double Seven<long double>() {
-  return 7.0l;
-}
-
-template <typename T>
-constexpr T Ten() {
-  return 10.0f;
-}
-
-template <>
-constexpr double Ten<double>() {
-  return 10.0;
-}
-
-template <>
-constexpr long double Ten<long double>() {
-  return 10.0l;
-}
-
-template <typename T>
-void printFloatPrecision() {
-
-  using boost::math::float_next;
-  using boost::math::constants::pi;
-  using std::cos;
-  using std::nextafter;
-  using std::nexttoward;
-  using std::numeric_limits;
-  using std::pow;
-
-  printTitle<T>();
-
-  auto zero           = Zero<T>();
-  auto zeroplus       = float_next(zero);
-  auto nextafterzero  = nextafter(zero, Two<T>());
-  auto nextzerotoward = nexttoward(zero, Two<T>());
-
-  cout << "zero: " << zero << endl;
-  cout << "next to zero: " << zeroplus << endl;
-  cout << "next after zero: " << nextafterzero << endl;
-  cout << "next after zero toward two: " << nextzerotoward << endl;
-
-  auto one                    = One<T>();
-  auto oneplus                = float_next(one);
-  auto nextafterone           = nextafter(one, Two<T>());
-  auto nextonetoward          = nexttoward(one, Two<T>());
-  auto cospiover7             = cos(pi<T>() / Seven<T>());
-  auto default_test_tolerance = pow(Ten<T>(), -numeric_limits<T>::digits10);
-
-  cout << "one: " << one << endl;
-  cout << "next to one: " << oneplus << endl;
-  cout << "next after one: " << nextafterone << endl;
-  cout << "next after one toward two: " << nextonetoward << endl;
-
-  cout << "pi: " << pi<T>() << endl;
-  cout << "the Cosine of pi/7: " << cospiover7 << endl;
-  cout << "the default test tolerance: " << default_test_tolerance << endl;
-
-  cout << "The mantissa digits: " << numeric_limits<T>::digits << endl;
-  cout << "The decimal digits: " << numeric_limits<T>::digits10 << endl;
-  cout << "The epsilon: " << numeric_limits<T>::epsilon() << endl;
-  cout << "The minimum exponent: " << numeric_limits<T>::min_exponent << endl;
-  cout << "The minimum decimal exponent: " << numeric_limits<T>::min_exponent10 << endl;
-  cout << "The maximum exponent: " << numeric_limits<float>::max_exponent << endl;
-  cout << "The maximum decimal exponent: " << numeric_limits<T>::max_exponent10 << endl;
-  cout << "The minimum: " << numeric_limits<T>::min() << endl;
-  cout << "The maximum: " << numeric_limits<T>::max() << endl;
-  cout << "The sizeof: " << sizeof(T) << endl;
-  cout << "The sizeof in bits: " << 8 * sizeof(T) << endl;
-}
-
-class FloatPrecision : public Program {
-
-public:
-  ExitCode mainMethod(ELEMENTS_UNUSED map<string, VariableValue>& args) override {
-
-    cout << std::fixed << std::setprecision(PRINT_PRECISION);
-
-    printFloatPrecision<float>();
-
-    printFloatPrecision<double>();
-
-    printFloatPrecision<long double>();
-
-    return ExitCode::OK;
-  }
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-/**
- * Implementation of a main using a base class macro
- * This must be present in all Elements programs
- */
-MAIN_FOR(Elements::Examples::FloatPrecision)
diff --git a/ElementsExamples/src/program/GnuAstro.cpp b/ElementsExamples/src/program/GnuAstro.cpp
deleted file mode 100644
index c989edfe..00000000
--- a/ElementsExamples/src/program/GnuAstro.cpp
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * @file GnuAstro.cpp
- * @date January 6th, 2015
- * @author Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <map>     // for map
-#include <string>  // for string
-
-#include <gnuastro/cosmology.h>
-#include <gnuastro/fits.h>  // header file to test
-
-#include "ElementsKernel/ProgramHeaders.h"  // for including all Program/related headers
-#include "ElementsKernel/Unused.h"          // for ELEMENTS_UNUSED
-
-using std::map;
-using std::string;
-
-namespace Elements {
-namespace Examples {
-
-class GnuAstro : public Program {
-
-public:
-  ExitCode mainMethod(ELEMENTS_UNUSED map<string, VariableValue>& args) override {
-
-    auto log = Logging::getLogger("GnuAstroExample");
-
-    string test_upper_string{"THATSTRING"};
-    log.info() << "This is the test upper string: " << test_upper_string;
-
-    double z{2.5};
-    double H0{67.66};
-
-    auto age = gal_cosmology_age(z, H0, 0.0, 0.0, 0.0);
-
-    log.info() << "Age of the Universe @ z = " << z << " : " << age << " GA";
-
-    return ExitCode::OK;
-  }
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-/**
- * Implementation of a main using a base class macro
- * This must be present in all Elements programs
- */
-MAIN_FOR(Elements::Examples::GnuAstro)
diff --git a/ElementsExamples/src/program/Gsl.cpp b/ElementsExamples/src/program/Gsl.cpp
deleted file mode 100644
index 54e8b0b3..00000000
--- a/ElementsExamples/src/program/Gsl.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * @file Gsl.cpp
- * @date January 6th, 2015
- * @author Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <map>     // for map
-#include <string>  // for string
-
-#include <boost/format.hpp>  // for format
-
-#include <gsl/gsl_sf_bessel.h>  // for gsl_sf_bessel_J0
-#include <gsl/gsl_version.h>
-
-#include "ElementsKernel/ProgramHeaders.h"  // for including all Program/related headers
-#include "ElementsKernel/Unused.h"          // for ELEMENTS_UNUSED
-
-using std::map;
-using std::string;
-
-namespace Elements {
-namespace Examples {
-
-class Gsl : public Program {
-
-public:
-  ExitCode mainMethod(ELEMENTS_UNUSED map<string, VariableValue>& args) override {
-
-    auto log = Logging::getLogger("GslExample");
-
-    log.info() << "GSL version: " << gsl_version;
-
-    double x = 5.0;
-    double y = gsl_sf_bessel_J0(x);
-
-    log.info() << boost::format("J0(%g) = %.18e\n") % x % y;
-
-    return ExitCode::OK;
-  }
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-/**
- * Implementation of a main using a base class macro
- * This must be present in all Elements programs
- */
-MAIN_FOR(Elements::Examples::Gsl)
diff --git a/ElementsExamples/src/program/Healpix.cpp b/ElementsExamples/src/program/Healpix.cpp
deleted file mode 100644
index 390c0bdb..00000000
--- a/ElementsExamples/src/program/Healpix.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * @file Healpix.cpp
- * @date January 6th, 2015
- * @author Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <map>     // for map
-#include <string>  // for string
-
-#include <healpix_cxx/healpix_map.h>  // for Healpix_Map
-
-#include "ElementsKernel/ProgramHeaders.h"  // for including all Program/related headers
-#include "ElementsKernel/Unused.h"          // for ELEMENTS_UNUSED
-
-using std::map;
-using std::string;
-
-namespace Elements {
-namespace Examples {
-
-class Healpix : public Program {
-
-public:
-  ExitCode mainMethod(ELEMENTS_UNUSED map<string, VariableValue>& args) override {
-
-    auto log = Logging::getLogger("HealpixExample");
-
-    Healpix_Map<double> map;
-
-    log.info() << "done with test program! ";
-
-    return ExitCode::OK;
-  }
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-/**
- * Implementation of a main using a base class macro
- * This must be present in all Elements programs
- */
-MAIN_FOR(Elements::Examples::Healpix)
diff --git a/ElementsExamples/src/program/OpenMP.cpp b/ElementsExamples/src/program/OpenMP.cpp
deleted file mode 100644
index f043574f..00000000
--- a/ElementsExamples/src/program/OpenMP.cpp
+++ /dev/null
@@ -1,110 +0,0 @@
-/**
- * @file OpenMP.cpp
- * @date March 17th, 2020
- * @author Hubert Degaudenzi
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <complex>  // for complex
-#include <cstdio>   // for size_t
-#include <map>      // for map
-#include <string>   // for string
-
-#include <boost/current_function.hpp>  // for BOOST_CURRENT_FUNCTION
-
-#include "ElementsKernel/ProgramHeaders.h"  // for including all Program/related headers
-
-using std::map;
-using std::size_t;
-using std::string;
-using complex = std::complex<double>;
-
-namespace Elements {
-namespace Examples {
-
-static constexpr char CHARSET[] = ".,c8M@jawrpogOQEPGJ";
-
-class OpenMP : public Program {
-
-public:
-  ExitCode mainMethod(map<string, VariableValue>& /*args*/) override {
-
-    auto log = Logging::getLogger("OpenMP");
-
-    const int width      = 78;
-    const int height     = 44;
-    const int num_pixels = width * height;
-
-    const complex center(-.7, 0);
-    const complex span(2.7, -(4 / 3.0) * 2.7 * height / width);
-    const complex begin   = center - span / 2.0;  //, end = center+span/2.0;
-    const int     maxiter = 100000;
-
-#pragma omp parallel for ordered schedule(dynamic)
-    for (int pix = 0; pix < num_pixels; ++pix) {
-
-      const int x = pix % width;
-      const int y = pix / width;
-
-      complex c = begin + complex(x * span.real() / (width + 1.0), y * span.imag() / (height + 1.0));
-
-      size_t n = mandelbrotCalculate(c, maxiter);
-      if (n == maxiter) {
-        n = 0;
-      }
-
-#pragma omp ordered
-      {
-        char c2 = ' ';
-        if (n > 0) {
-          c2 = CHARSET[n % (sizeof(CHARSET) - 1)];
-        }
-        std::putchar(c2);
-        if (x + 1 == width) {
-          std::puts("|");
-        }
-      }
-    }
-
-    log.info() << "done with test program! ";
-
-    return ExitCode::OK;
-  }
-
-private:
-  static size_t mandelbrotCalculate(const complex c, const size_t maxiter) {
-    // iterates z = z + c until |z| >= 2 or maxiter is reached,
-    // returns the number of iterations.
-    complex z = c;
-    size_t  n = 0;
-    for (; n < maxiter; ++n) {
-      if (std::abs(z) >= 2.0) {
-        break;
-      }
-      z = z * z + c;
-    }
-    return n;
-  }
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-/**
- * Implementation of a main using a base class macro
- * This must be present in all Elements programs
- */
-MAIN_FOR(Elements::Examples::OpenMP)
diff --git a/ElementsExamples/src/program/Program.cpp b/ElementsExamples/src/program/Program.cpp
deleted file mode 100644
index f570f8cd..00000000
--- a/ElementsExamples/src/program/Program.cpp
+++ /dev/null
@@ -1,245 +0,0 @@
-/**
- * @file Program.cpp
- * @date January 6th, 2015
- * @author Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <cstdint>  // for int64_t
-#include <map>      // for map
-#include <memory>   // for unique_ptr
-#include <string>   // for string
-#include <utility>  // for move
-#include <vector>   // for vector
-
-#include "ElementsExamples/ClassExample.h"
-#include <boost/current_function.hpp>  // for BOOST_CURRENT_FUNCTION
-#include <boost/program_options.hpp>   // for program options from configuration file of command line arguments
-
-#include "ElementsKernel/Module.h"          // for Module
-#include "ElementsKernel/ProgramHeaders.h"  // for including all Program/related headers
-#include "ElementsKernel/Project.h"         // for Project
-#include "ElementsKernel/ThisModule.h"      // for getThisExecutableInfo
-
-#include "ElementsExamples/functionExample.h"
-#include "ElementsExamples/printProject.h"
-
-using std::map;
-using std::string;
-using std::vector;
-
-using boost::program_options::bool_switch;
-using boost::program_options::value;
-
-using std::int64_t;
-
-namespace Elements {
-namespace Examples {
-
-/**
- * @brief
- *    test function to demonstrate the logger
- * @details
- *    test function to demonstrate the logger
- */
-
-void myLocalLogTestFunc() {
-
-  auto logger = Logging::getLogger();
-  logger.info("Test of Message");
-
-  auto logger2 = Logging::getLogger(__func__);
-  logger2.info("Test2 of Message");
-
-  auto logger3 = Logging::getLogger(BOOST_CURRENT_FUNCTION);
-  logger3.info("Test3 of Message");
-}
-
-/**
- * @class Program
- * @brief
- *    Simple example of an Elements program
- * @details
- *    All C++ executable must extend the Elements::Program base class
- *
- */
-class Program : public Elements::Program {
-
-public:
-  /**
-   * @brief
-   *    Allows to define the (command line and configuration file) options specific to
-   *    this program
-   * @details
-   *    See the ElementsProgram documentation for more details.
-   * @return
-   *    A BOOST program options_description
-   */
-  OptionsDescription defineSpecificProgramOptions() override {
-
-    bool flag = false;
-
-    OptionsDescription config_options{"Example program options"};
-
-    // clang-format off
-
-    config_options.add_options()
-        ("int-option", value<int>()->default_value(int{111}), "An example int option")
-        ("int-option-with-default-and-default-in-conf", value<int>()->default_value(int{222}), "An example int option")
-        ("int-option-with-default-no-default-in-conf", value<int>()->default_value(int{444}),
-        "An example int option")("int-option-no-default-not-defined-in-conf", value<int>(), "An example int option")
-        ("int-option-with-no-defaults-anywhere", value<int>(),
-        "An example int option")("string-option", value<string>()->default_value(string{}), "An example string option")
-        ("boolean-option", value<bool>()->default_value(false), "An example boolean option")
-        ("flag,f", bool_switch(&flag), "An option to set to true")("string-option-no-default", value<string>(),
-                                                                  "A string option without default value")
-        ("long-long-option", value<int64_t>()->default_value(int64_t{}), "An example long long option")
-        ("double-option", value<double>()->default_value(double{}), "An example double option")
-        ("int-vector-option", value<vector<int>>()->multitoken()->default_value(vector<int>{}, "Empty"),
-        "An example vector option")
-        ("threshold,t", value<double>()->default_value(double{0.5}), "An example double option");
-
-    // clang-format on
-
-    return config_options;
-  }
-
-  /**
-   * @brief
-   *    The "main" method.
-   * @details
-   *    This method is the entry point to the program. In this sense, it is similar to a main
-   *    (and it is why it is called mainMethod()). The code below contains the calls to the
-   *    different classes created for the first developer's workshop
-   *
-   *    See the ElementsProgram documentation for more details.
-   *
-   */
-  ExitCode mainMethod(map<string, VariableValue>& args) override {
-
-    auto log = Logging::getLogger("Program");
-    log.info("Entering mainMethod()");
-    log.info("#");
-    /*
-     * Check availability of mandatory program arguments (or options)
-     *
-     * Arguments values may come from
-     *  1) the default value provided in above defineSpecificProgramOptions()
-     *  2) the configuration file
-     *  3) the command line
-     *
-     *  If an none of the three options provide any values for a mandatory
-     *  argument, you should check if your option has any values following the
-     *  below example. Note that this may happen for all options without default
-     *  values.
-     */
-    if (args["string-option-no-default"].empty()) {
-      log.info() << "No value are available for string-option-no-default";
-      /*
-       * An exception may be thrown her if the above option is mandatory and there
-       * is no way to continue without value
-       */
-    }
-    /*
-     * Get and log one of the program arguments (or options)
-     *
-     * The string-option has a default empty string value, so that it can always be
-     * printed event as an empty string
-     */
-    string string_example{args["string-option"].as<string>()};
-    log.info() << "String option value: " << string_example;
-
-    log.info() << "The int-option value is " << args["int-option"].as<int>();
-    log.info() << "The threshold value is " << args["threshold"].as<double>();
-
-    // Some initialization
-    double  input_variable = 3.4756;
-    int64_t source_id      = 12345;
-    double  ra             = 45.637;
-
-    // Factory method example
-    ClassExample example_class_object = ClassExample::factoryMethod(source_id, ra);
-
-    /*
-     * All fundamental type variables can be copied forth and back without significant
-     * cost in (almost) all cases
-     */
-    double method_result = example_class_object.fundamentalTypeMethod(input_variable);
-    log.info() << "Some result: " << method_result;
-
-    double first = 1.0;
-    double division_result{};
-    try {
-      log.info("#");
-      log.info("#   Calling a method throwing an exception ");
-      log.info("#");
-      double second   = 0.0;
-      division_result = example_class_object.divideNumbers(first, second);
-      //
-    } catch (const Exception& e) {
-      log.info("#");
-      log.info() << e.what();
-      log.info("#");
-      log.info("#   In this silly example we continue with a fake fix ");
-      log.info("#");
-      division_result = example_class_object.divideNumbers(first, 0.000001);
-    }
-    log.info() << "Second result is: " << division_result;
-
-    /*
-     * Illustration on how best to use smart pointer (regular pointer should not
-     * be used anymore). The move() indicate that the ownership of the pointer is given to the
-     * method called. The vector_unique_ptr cannot be used in this method anymore after the
-     * call.
-     */
-    std::unique_ptr<vector<double>> vector_unique_ptr{new vector<double>{1.0, 2.3, 4.5}};
-    example_class_object.passingUniquePointer(std::move(vector_unique_ptr));
-
-    /*
-     * Illustration on how best to pass any object. The passingObjectInGeneral() is taking
-     * a reference to this object.
-     */
-    vector<double> object_example{vector<double>{1.0, 2.3, 4.5}};
-    example_class_object.passingObjectInGeneral(object_example);
-
-    log.info() << "Function Example: " << functionExample(3);
-
-    log.info() << "This executable name: " << Elements::System::getThisExecutableInfo().name();
-
-    myLocalLogTestFunc();
-
-    printProject();
-
-    log.info() << Project();
-    log.info() << "Project Name: " << Project::name();
-    log.info() << "Project Version: " << Project::versionString();
-    log.info() << "Module Name: " << Module::name();
-    log.info() << "Module Version: " << Module::versionString();
-
-    log.info("#");
-    log.info("Exiting mainMethod()");
-    return ExitCode::OK;
-  }
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-/**
- * Implementation of a main using a base class macro
- * This must be present in all Elements programs
- */
-MAIN_FOR(Elements::Examples::Program)
diff --git a/ElementsExamples/src/program/ProgramWithArguments.cpp b/ElementsExamples/src/program/ProgramWithArguments.cpp
deleted file mode 100644
index 0a09b391..00000000
--- a/ElementsExamples/src/program/ProgramWithArguments.cpp
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- * @file ProgramWithArguments.cpp
- *
- * @date Aug 27, 2014
- * @author Hubert Degaudenzi
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <iostream>  // for cout, endl
-#include <map>       // for map
-#include <string>    // for string
-#include <utility>   // for pair, make_pair
-#include <vector>    // for vector
-
-#include <boost/program_options.hpp>  // for program options from configuration file of command line arguments
-
-#include "ElementsKernel/ProgramHeaders.h"
-#include "ElementsKernel/Unused.h"
-
-using std::map;
-using std::string;
-using std::vector;
-
-using boost::program_options::value;
-
-namespace Elements {
-namespace Examples {
-
-/**
- * @class ProgramWithArguments
- * @brief
- *    Example of an Elements program
- * @details
- *    This class is an example of a program based on the ElementsProgram class. It can be copied/pasted
- *    conveniently to write a new program.
- */
-class ProgramWithArguments : public Program {
-
-public:
-  /**
-   * @brief
-   *    The "main" method.
-   * @details
-   *    This method is the entry point to the program. In this sense, it is similar to a main
-   *    (and it is why it is called mainMethod()). The code below provides only example stuff
-   *    which should be replaced by real code in any program.
-   *
-   *    See the ElementsProgram documentation for more details.
-   *
-   */
-  ExitCode mainMethod(ELEMENTS_UNUSED map<string, VariableValue>& args) override {
-
-    // Get logger and log the entry into the mainMethod
-    auto log = Logging::getLogger();
-
-    log.info("This Works");
-
-    using std::cout;
-    using std::endl;
-
-    cout << "This Works too!" << endl;
-
-    if (args.count("input-files") > 0) {
-      vector<string> files = args["input-files"].as<vector<string>>();
-      for (string file : files) {
-        cout << "Input file " << file << endl;
-      }
-    }
-    return ExitCode::OK;
-  }
-
-  std::pair<OptionsDescription, PositionalOptionsDescription> defineProgramArguments() override {
-    OptionsDescription desc{};
-    auto               add = desc.add_options();
-
-    add("input-files", value<vector<string>>(), "Input files");
-
-    PositionalOptionsDescription pos_desc;
-    pos_desc.add("input-files", -1);
-
-    return std::make_pair(desc, pos_desc);
-  }
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-MAIN_FOR(Elements::Examples::ProgramWithArguments)
diff --git a/ElementsExamples/src/program/SimpleProgram.cpp b/ElementsExamples/src/program/SimpleProgram.cpp
deleted file mode 100644
index 78c67817..00000000
--- a/ElementsExamples/src/program/SimpleProgram.cpp
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * @file SimpleProgram.cpp
- *
- * @date Aug 27, 2014
- * @author Hubert Degaudenzi
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <iostream>  // for cout, endl
-#include <map>       // for map
-#include <string>    // for string
-
-#include "ElementsKernel/ProgramHeaders.h"
-#include "ElementsKernel/Sleep.h"  // for nanoSleep
-#include "ElementsKernel/Unused.h"
-
-using std::map;
-using std::string;
-
-namespace Elements {
-namespace Examples {
-
-/**
- * @class SimpleProgram
- * @brief
- *    Example of an Elements program
- * @details
- *    This class is an example of a program based on the ElementsProgram class. It can be copied/pasted
- *    conveniently to write a new program.
- */
-class SimpleProgram : public Program {
-
-public:
-  /**
-   * @brief
-   *    The "main" method.
-   * @details
-   *    This method is the entry point to the program. In this sense, it is similar to a main
-   *    (and it is why it is called mainMethod()). The code below provides only example stuff
-   *    which should be replaced by real code in any program.
-   *
-   *    See the ElementsProgram documentation for more details.
-   *
-   */
-  ExitCode mainMethod(ELEMENTS_UNUSED map<string, VariableValue>& args) override {
-
-    // Get logger and log the entry into the mainMethod
-    auto log = Logging::getLogger();
-
-    log.info("This Works");
-
-    Elements::nanoSleep(4);
-
-    std::cout << "This Works too!" << std::endl;
-
-    return ExitCode::OK;
-  }
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-MAIN_FOR(Elements::Examples::SimpleProgram)
diff --git a/ElementsExamples/src/program/Wcs.cpp b/ElementsExamples/src/program/Wcs.cpp
deleted file mode 100644
index 4385e1a1..00000000
--- a/ElementsExamples/src/program/Wcs.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * @file Wcs.cpp
- * @date January 6th, 2015
- * @author Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <map>     // for map
-#include <string>  // for string
-
-#include <wcslib/wcs.h>
-
-#include "ElementsKernel/ProgramHeaders.h"  // for including all Program/related headers
-#include "ElementsKernel/Unused.h"          // for ELEMENTS_UNUSED
-
-using std::map;
-using std::string;
-
-namespace Elements {
-namespace Examples {
-
-class Wcs : public Program {
-
-public:
-  ExitCode mainMethod(ELEMENTS_UNUSED map<string, VariableValue>& args) override {
-
-    auto log = Logging::getLogger("WcsExample");
-
-    log.info() << "done with test program! ";
-
-    return ExitCode::OK;
-  }
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-/**
- * Implementation of a main using a base class macro
- * This must be present in all Elements programs
- */
-MAIN_FOR(Elements::Examples::Wcs)
diff --git a/ElementsExamples/src/program/Xerces.cpp b/ElementsExamples/src/program/Xerces.cpp
deleted file mode 100644
index be90498c..00000000
--- a/ElementsExamples/src/program/Xerces.cpp
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * @file Xerces.cpp
- * @date January 6th, 2015
- * @author Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <map>     // for map
-#include <string>  // for string
-
-#include <xercesc/util/PlatformUtils.hpp>  // for Initialize and Terminate
-#include <xercesc/util/XercesVersion.hpp>  // For gXercesFullVersionStr
-
-#include "ElementsKernel/ProgramHeaders.h"  // for including all Program/related headers
-#include "ElementsKernel/Unused.h"          // for ELEMENTS_UNUSED
-
-namespace Xerces = XERCES_CPP_NAMESPACE;  // needed to avoid an unneeded ugly ns
-
-using std::map;
-using std::string;
-
-namespace Elements {
-namespace Examples {
-
-class Xerces : public Program {
-
-public:
-  ExitCode mainMethod(ELEMENTS_UNUSED map<string, VariableValue>& args) override {
-
-    auto log = Logging::getLogger("XercesExample");
-
-    ::Xerces::XMLPlatformUtils::Initialize();
-
-    log.info() << "XercesC version:" << gXercesFullVersionStr;
-
-    ::Xerces::XMLPlatformUtils::Terminate();
-
-    log.info() << "done with test program! ";
-
-    return ExitCode::OK;
-  }
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-/**
- * Implementation of a main using a base class macro
- * This must be present in all Elements programs
- */
-MAIN_FOR(Elements::Examples::Xerces)
diff --git a/ElementsExamples/src/pybind11/callback.cpp b/ElementsExamples/src/pybind11/callback.cpp
deleted file mode 100644
index 85c4ea5b..00000000
--- a/ElementsExamples/src/pybind11/callback.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * @file pybind11/callback.cpp
- *
- * @date Apr 1, 2020
- * @author Hubert Degaudenzi
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <pybind11/functional.h>
-#include <pybind11/pybind11.h>
-#include <pybind11/stl.h>
-#include <pyerrors.h>
-
-#include "ElementsExamples/callBackExample.h"
-#include "ElementsKernel/Export.h"
-
-ELEMENTS_API PYBIND11_MODULE(testCallBack, mod) {
-  mod.def("test", &Elements::Examples::testCallBack);
-}
diff --git a/ElementsExamples/tests/python/ClassExample_test.py b/ElementsExamples/tests/python/ClassExample_test.py
deleted file mode 100644
index fe621dc0..00000000
--- a/ElementsExamples/tests/python/ClassExample_test.py
+++ /dev/null
@@ -1,52 +0,0 @@
-#
-# Copyright (C) 2012-2020 Euclid Science Ground Segment
-#
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 3.0 of the License, or (at your option)
-# any later version.
-#
-# This library 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 Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-""" test module for the class example"""
-
-import unittest
-from ElementsExamples.PythonModuleExample import ClassExample
-
-
-class ClassExampleTestCase(unittest.TestCase):
-    """
-    Simple test case for the ClassExample class
-    """
-
-    def setUp(self):
-        unittest.TestCase.setUp(self)
-        self.tol = 1e-6
-        self.first = 23.4857
-        self.second = 3.4756
-        self.my_list = [6, 7, 8, 9]
-        self.expected_result = 6 + 7 + 8 + 9
-        self.example_object = ClassExample(self.my_list)
-
-    def tearDown(self):
-        unittest.TestCase.tearDown(self)
-
-    def testProduct(self):
-        result = ClassExample.product(self.first, self.second)
-        assert abs(result - (self.first * self.second)) < self.tol
-
-    def testDestruction(self):
-        assert abs(self.expected_result - self.example_object.sumListValues()) < self.tol
-
-
-if __name__ == '__main__':
-    unittest.main()
-
diff --git a/ElementsExamples/tests/python/CppProgramTest.py b/ElementsExamples/tests/python/CppProgramTest.py
deleted file mode 100644
index 748d4471..00000000
--- a/ElementsExamples/tests/python/CppProgramTest.py
+++ /dev/null
@@ -1,114 +0,0 @@
-#
-# Copyright (C) 2012-2020 Euclid Science Ground Segment
-#
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 3.0 of the License, or (at your option)
-# any later version.
-#
-# This library 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 Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-'''
-:date: May 29, 2018
-
-:author: Hubert Degaudenzi
-
-'''
-
-__updated__ = "2022-02-22"
-
-from subprocess import Popen, PIPE
-import shlex
-import unittest
-import pytest
-
-from ElementsKernel.Auxiliary import getAuxiliaryPath
-
-
-class TestCppProgramTest(object):
-
-    @pytest.mark.parametrize(
-        "default, default_conf, cmd_line_conf, cmd_line_arg, arg_name, expected",
-        [
-            ("default", None, None, None, "int-option-with-default-no-default-in-conf", 444),
-            ("default", "default_conf", None, None, "int-option-with-default-and-default-in-conf", 333),
-            ("default", "default_conf", "cmd_line_conf", None, "int-option-with-default-and-default-in-conf", 777),
-            ("default", "default_conf", "cmd_line_conf", "regular", "int-option-with-default-and-default-in-conf", 666),
-            ("default", "default_conf", "cmd_line_conf", "with_space", "int-option-with-default-and-default-in-conf", 666),
-            ("default", "default_conf", None, "regular", "int-option-with-default-and-default-in-conf", 666),
-            ("default", "default_conf", None, "with_space", "int-option-with-default-and-default-in-conf", 666),
-            ("default", None, "cmd_line_conf", None, "int-option-with-default-no-default-in-conf", 888),
-            ("default", None, "cmd_line_conf", "regular", "int-option-with-default-no-default-in-conf", 666),
-            ("default", None, "cmd_line_conf", "with_space", "int-option-with-default-no-default-in-conf", 666),
-            ("default", None, None, "regular", "int-option-with-default-no-default-in-conf", 666),
-            ("default", None, None, "with_space", "int-option-with-default-no-default-in-conf", 666),
-            (None, "default_conf", None, None, "int-option", 3),
-            (None, "default_conf", "cmd_line_conf", None, "int-option", 4),
-            (None, "default_conf", "cmd_line_conf", "regular", "int-option", 666),
-            (None, "default_conf", "cmd_line_conf", "with_space", "int-option", 666),
-            (None, "default_conf", None, "regular", "int-option", 666),
-            (None, "default_conf", None, "with_space", "int-option", 666),
-            (None, None, "cmd_line_conf", None, "int-option-no-default-not-defined-in-conf", 555),
-            (None, None, "cmd_line_conf", "regular", "int-option-no-default-not-defined-in-conf", 666),
-            (None, None, "cmd_line_conf", "with_space", "int-option-no-default-not-defined-in-conf", 666),
-            (None, None, None, "regular", "int-option-with-no-defaults-anywhere", 666),
-            (None, None, None, "with_space", "int-option-with-no-defaults-anywhere", 666),
-        ]
-    )
-    def test_that_parameter_precedence_is_respected(self,
-                                                    default,
-                                                    default_conf,
-                                                    cmd_line_conf,
-                                                    cmd_line_arg,
-                                                    arg_name,
-                                                    expected):
-
-        test_program_script = 'CppProgramExample'
-
-        cmd = '{} --log-level=DEBUG'.format(test_program_script)
-
-        if cmd_line_conf is not None:
-            cmd_line_conf_fpath = getAuxiliaryPath("ElementsExamples/tests/conf/%s.conf" % test_program_script)
-            cmd = '{} --config-file={}'.format(cmd, cmd_line_conf_fpath)
-
-        if cmd_line_arg is not None:
-            if cmd_line_arg == "regular":
-                cmd = '{} --{}=666'.format(cmd, arg_name)
-            else:
-                cmd = '{} --{} 666'.format(cmd, arg_name)
-
-        process = Popen(shlex.split(cmd), stdout=PIPE, stderr=PIPE)
-        _, stderr = process.communicate()
-        output_arg_line = list(
-            filter(
-                lambda line: ' {} = '.format(arg_name) in line,
-                stderr.decode().splitlines()
-            )
-        )
-
-        assert len(output_arg_line) == 1, 'the argument {} should appear exactly once'.format(arg_name)
-
-        output_arg_value = int(output_arg_line.pop().split('=')[-1])
-
-        msg = (
-            'The command\n\t{}\nfailed while checking for the value of argument\n\t{}\n'
-            'The obtained value is "{}" while the expected value is "{}"'
-        ).format(
-            cmd,
-            arg_name,
-            output_arg_value,
-            expected
-        )
-        assert output_arg_value == expected, msg
-
-
-if __name__ == "__main__":
-    unittest.main()
diff --git a/ElementsExamples/tests/python/CythonExample_test.py b/ElementsExamples/tests/python/CythonExample_test.py
deleted file mode 100644
index 348e4752..00000000
--- a/ElementsExamples/tests/python/CythonExample_test.py
+++ /dev/null
@@ -1,58 +0,0 @@
-#
-# Copyright (C) 2012-2020 Euclid Science Ground Segment
-#
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 3.0 of the License, or (at your option)
-# any later version.
-#
-# This library 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 Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-
-'''
-:date: Jun 14, 2017
-
-:author: hubert
-'''
-import unittest
-
-from ElementsKernel.Path import pyVersionWhich
-
-cython_exe = pyVersionWhich("cython")
-
-if cython_exe:
-    # pylint: disable=no-name-in-module,unused-import
-    from PiCalculator import print_pi
-    from Rect import Rectangle
-
-    class RectangleTest(unittest.TestCase):
-        """ Rectangle class to test Cython """
-
-        def setUp(self):
-            self.rectangle = Rectangle(1, 2, 3, 4)
-
-        def test_getLength(self):
-            self.assertEqual(self.rectangle.getLength(), 2)
-
-        def test_getHeight(self):
-            self.assertEqual(self.rectangle.getHeight(), 2)
-
-        def test_getArea(self):
-            self.assertEqual(self.rectangle.getArea(), 4)
-
-        def test_move(self):
-            self.rectangle.move(4, 8)
-            self.test_getLength()
-            self.test_getHeight()
-            self.test_getArea()
-
-if __name__ == "__main__":
-    unittest.main()
diff --git a/ElementsExamples/tests/python/PiCalculator_test.py b/ElementsExamples/tests/python/PiCalculator_test.py
deleted file mode 100644
index 767f5d34..00000000
--- a/ElementsExamples/tests/python/PiCalculator_test.py
+++ /dev/null
@@ -1,42 +0,0 @@
-#
-# Copyright (C) 2012-2020 Euclid Science Ground Segment
-#
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 3.0 of the License, or (at your option)
-# any later version.
-#
-# This library 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 Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-import unittest
-
-class PiCalculatorTestCase(unittest.TestCase):
-
-    def setUp(self):
-        unittest.TestCase.setUp(self)
-        try:
-            import PiCalculator
-            self.has_cython = True
-        except ImportError:
-            self.has_cython = False
-
-    def tearDown(self):
-        unittest.TestCase.tearDown(self)
-
-    def testPrintPi(self):
-        """ Test the import of the print_pi function """
-        if self.has_cython:
-            # pylint: disable=no-name-in-module,import-outside-toplevel,unused-import
-            from PiCalculator import print_pi
-
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/ElementsExamples/tests/python/ProgramTest.py b/ElementsExamples/tests/python/ProgramTest.py
deleted file mode 100644
index bb60bd57..00000000
--- a/ElementsExamples/tests/python/ProgramTest.py
+++ /dev/null
@@ -1,123 +0,0 @@
-#
-# Copyright (C) 2012-2020 Euclid Science Ground Segment
-#
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 3.0 of the License, or (at your option)
-# any later version.
-#
-# This library 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 Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-
-'''
-:date: May 10, 2017
-
-:author: Hubert Degaudenzi
-
-'''
-
-__updated__ = "2020-10-19"
-
-from subprocess import Popen, PIPE
-import shlex
-import unittest
-import pytest
-
-from ElementsKernel.Program import Program
-from ElementsKernel.Auxiliary import getAuxiliaryPath
-
-
-class TestProgramTest(object):
-
-    def test_that_instance_can_be_created_without_raising_exception(self):
-        _ = Program("ElementsExamples.PythonProgramExample")
-
-    def test_that_instance_can_be_created_without_raising_exception_for_a_blank_original_path(self):
-        _ = Program("ElementsExamples.PythonProgramExample", original_path="")
-
-    @pytest.mark.parametrize(
-        "default, default_conf, cmd_line_conf, cmd_line_arg, arg_name, expected",
-        [
-            ("default", None,           None,            None,         "int-option-with-default-no-default-in-conf",  444),
-            ("default", "default_conf", None,            None,         "int-option-with-default-and-default-in-conf", 333),
-            ("default", "default_conf", "cmd_line_conf", None,         "int-option-with-default-and-default-in-conf", 777),
-            ("default", "default_conf", "cmd_line_conf", "regular",    "int-option-with-default-and-default-in-conf", 666),
-            ("default", "default_conf", "cmd_line_conf", "with_space", "int-option-with-default-and-default-in-conf", 666),
-            ("default", "default_conf", None,            "regular",    "int-option-with-default-and-default-in-conf", 666),
-            ("default", "default_conf", None,            "with_space", "int-option-with-default-and-default-in-conf", 666),
-            ("default", None,           "cmd_line_conf", None,         "int-option-with-default-no-default-in-conf",  888),
-            ("default", None,           "cmd_line_conf", "regular",    "int-option-with-default-no-default-in-conf",  666),
-            ("default", None,           "cmd_line_conf", "with_space", "int-option-with-default-no-default-in-conf",  666),
-            ("default", None,           None,            "regular",    "int-option-with-default-no-default-in-conf",  666),
-            ("default", None,           None,            "with_space", "int-option-with-default-no-default-in-conf",  666),
-            (None,      "default_conf", None,            None,         "int-option",                                    3),
-            (None,      "default_conf", "cmd_line_conf", None,         "int-option",                                    4),
-            (None,      "default_conf", "cmd_line_conf", "regular",    "int-option",                                  666),
-            (None,      "default_conf", "cmd_line_conf", "with_space", "int-option",                                  666),
-            (None,      "default_conf", None,            "regular",    "int-option",                                  666),
-            (None,      "default_conf", None,            "with_space", "int-option",                                  666),
-            (None,      None,           "cmd_line_conf", None,         "int-option-no-default-not-defined-in-conf",   555),
-            (None,      None,           "cmd_line_conf", "regular",    "int-option-no-default-not-defined-in-conf",   666),
-            (None,      None,           "cmd_line_conf", "with_space", "int-option-no-default-not-defined-in-conf",   666),
-            (None,      None,           None,            "regular",    "int-option-with-no-defaults-anywhere",        666),
-            (None,      None,           None,            "with_space", "int-option-with-no-defaults-anywhere",        666),
-        ]
-    )
-    def test_that_parameter_precedence_is_respected(self,
-                                                    default,
-                                                    default_conf,
-                                                    cmd_line_conf,
-                                                    cmd_line_arg,
-                                                    arg_name,
-                                                    expected):
-
-        test_program_script = 'PythonProgramExample'
-
-        cmd = '{} --log-level=DEBUG'.format(test_program_script)
-
-        if cmd_line_conf is not None:
-            cmd_line_conf_fpath = getAuxiliaryPath("ElementsExamples/tests/conf/%s.conf" % test_program_script)
-            cmd = '{} --config-file={}'.format(cmd, cmd_line_conf_fpath)
-
-        if cmd_line_arg is not None:
-            if cmd_line_arg == "regular":
-                cmd = '{} --{}=666'.format(cmd, arg_name)
-            else:
-                cmd = '{} --{} 666'.format(cmd, arg_name)
-
-
-        process = Popen(shlex.split(cmd), stdout=PIPE, stderr=PIPE)
-        _, stderr = process.communicate()
-        output_arg_line = list(
-            filter(
-                lambda line: ' {} = '.format(arg_name) in line,
-                stderr.decode().splitlines()
-            )
-        )
-
-        assert len(output_arg_line) == 1, 'the argument {} should appear exactly once'.format(arg_name)
-
-        output_arg_value = int(output_arg_line.pop().split('=')[-1])
-
-        msg = (
-            'The command\n\t{}\nfailed while checking for the value of argument\n\t{}\n'
-            'The obtained value is "{}" while the expected value is "{}"'
-        ).format(
-            cmd,
-            arg_name,
-            output_arg_value,
-            expected
-        )
-        assert output_arg_value == expected, msg
-
-
-if __name__ == "__main__":
-    unittest.main()
diff --git a/ElementsExamples/tests/python/SwigExample_test.py b/ElementsExamples/tests/python/SwigExample_test.py
deleted file mode 100644
index 4b972abc..00000000
--- a/ElementsExamples/tests/python/SwigExample_test.py
+++ /dev/null
@@ -1,54 +0,0 @@
-#
-# Copyright (C) 2012-2020 Euclid Science Ground Segment
-#
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; either version 3.0 of the License, or (at your option)
-# any later version.
-#
-# This library 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 Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-import unittest
-
-class SwigExampleTestCase(unittest.TestCase):
-
-    def setUp(self):
-        unittest.TestCase.setUp(self)
-        try:
-            import SwigExample
-            self.has_swig = True
-        except:
-            self.has_swig = False
-
-    def tearDown(self):
-        unittest.TestCase.tearDown(self)
-
-    def testFuncSwig(self):
-        if self.has_swig:
-            from SwigExample import functionExample
-            self.assertEqual(functionExample(3), 9)
-
-    def testClassSwig(self):
-        if self.has_swig:
-            from SwigExample import SwigClassExample
-            a = SwigClassExample(2.0, 3.0)
-            self.assertEqual(a.getRa(), 2.0)
-            self.assertEqual(a.getDec(), 3.0)
-
-    def testClassPositionalArgsSwig(self):
-        if self.has_swig:
-            from SwigExample import SwigClassExample
-            a = SwigClassExample(dec = 3.0, ra = 2.0)
-            self.assertEqual(a.getRa(), 2.0)
-            self.assertEqual(a.getDec(), 3.0)
-
-if __name__ == '__main__':
-    unittest.main()
diff --git a/ElementsExamples/tests/src/Boost/ClassExample2_test.cpp b/ElementsExamples/tests/src/Boost/ClassExample2_test.cpp
deleted file mode 100644
index aab1c929..00000000
--- a/ElementsExamples/tests/src/Boost/ClassExample2_test.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-/**
- * @file ClassExample2_test.cpp
- *
- * Created on: January 9, 2015
- *     Author: Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <cstdint>  // for int64_t
-#include <memory>   // for make_unique
-#include <string>   // for string
-#include <vector>   // for vector
-
-#include "ElementsExamples/ClassExample2.h"
-#include <boost/test/test_tools.hpp>
-#include <boost/test/unit_test.hpp>
-
-#include "ElementsKernel/Exception.h"
-
-using std::int64_t;
-using std::string;
-
-using Elements::Examples::ClassExample2;
-
-// tolerance value to compare floating point numbers
-constexpr double EXAMPLE_TOLERANCE = 1e-12;
-
-/*
- * Fixture to compare the test result against reference values
- */
-struct ClassExample2Fixture {
-
-  string  static_string{"This is a static field example"};
-  int64_t source_id{123456789};
-  double  ra{266.40506655};
-  double  input_variable{1.273645899};
-  double  expected_result{1.273645899};
-
-  ClassExample2 example_class = ClassExample2::factoryMethod(source_id, ra);
-
-  ClassExample2Fixture() {
-    // call constructor if needed
-  }
-
-  ~ClassExample2Fixture() {
-    // delete fixture object if needed
-  }
-};
-
-BOOST_AUTO_TEST_SUITE(ClassExample2TestSuite)
-
-BOOST_AUTO_TEST_CASE(WithoutFixture) {
-  BOOST_CHECK(true);
-}
-
-BOOST_FIXTURE_TEST_CASE(fundamentalTypeMethod_test, ClassExample2Fixture) {
-  BOOST_CHECK_CLOSE(expected_result, example_class.fundamentalTypeMethod(input_variable), EXAMPLE_TOLERANCE);
-}
-
-BOOST_FIXTURE_TEST_CASE(Getter_test, ClassExample2Fixture) {
-  BOOST_CHECK_EQUAL(source_id, example_class.getSourceId());
-}
-
-BOOST_FIXTURE_TEST_CASE(exception_in_divideNumbers_test, ClassExample2Fixture) {
-  //
-  BOOST_CHECK_EXCEPTION(example_class.divideNumbers(1.0, 0.0), Elements::Exception,
-                        // below is a lambda function used as a predicate to check the exception error message
-                        [](const Elements::Exception& e) {
-                          string exception_str = e.what();
-                          return exception_str.find("exception in ClassExample2::divideNumbers") != string::npos;
-                        });
-
-  BOOST_CHECK_NO_THROW(example_class.divideNumbers(1.0, 2.0));
-}
-
-BOOST_FIXTURE_TEST_CASE(PassArguments_test, ClassExample2Fixture) {
-
-  using std::vector;
-
-  vector<double> test_list{1.0, 2.0, 5.0};
-  auto           other_list = std::unique_ptr<vector<double>>(new vector<double>(3));
-
-  BOOST_CHECK_NO_THROW(example_class.passingObjectInGeneral(test_list));
-  BOOST_CHECK_NO_THROW(example_class.passingUniquePointer(std::move(other_list)));
-}
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/ElementsExamples/tests/src/Boost/ClassExample_test.cpp b/ElementsExamples/tests/src/Boost/ClassExample_test.cpp
deleted file mode 100644
index 4b73fd27..00000000
--- a/ElementsExamples/tests/src/Boost/ClassExample_test.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/**
- * @file ClassExample_test.cpp
- *
- * Created on: January 9, 2015
- *     Author: Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <cstdint>  // for int64_t
-#include <string>   // for string
-
-#include "ElementsExamples/ClassExample.h"
-#include <boost/test/test_tools.hpp>
-#include <boost/test/unit_test.hpp>
-
-#include "ElementsKernel/Exception.h"
-
-using std::int64_t;
-using std::string;
-
-using Elements::Examples::ClassExample;
-
-// tolerance value to compare floating point numbers
-constexpr double EXAMPLE_TOLERANCE = 1e-12;
-
-/*
- * Fixture to compare the test result against reference values
- */
-struct ClassExampleFixture {
-
-  string  static_string{"This is a static field example"};
-  int64_t source_id{123456789};
-  double  ra{266.40506655};
-  double  input_variable{1.273645899};
-  double  expected_result{1.273645899};
-
-  ClassExample example_class = ClassExample::factoryMethod(source_id, ra);
-
-  ClassExampleFixture() {
-    // call constructor if needed
-  }
-
-  ~ClassExampleFixture() {
-    // delete fixture object if needed
-  }
-};
-
-BOOST_AUTO_TEST_SUITE(ClassExampleTestSuite)
-
-BOOST_AUTO_TEST_CASE(WithoutFixture) {
-  BOOST_CHECK(true);
-}
-
-BOOST_FIXTURE_TEST_CASE(fundamentalTypeMethod_test, ClassExampleFixture) {
-  BOOST_CHECK_CLOSE(expected_result, example_class.fundamentalTypeMethod(input_variable), EXAMPLE_TOLERANCE);
-}
-
-BOOST_FIXTURE_TEST_CASE(Getter_test, ClassExampleFixture) {
-  BOOST_CHECK_EQUAL(source_id, example_class.getSourceId());
-}
-
-BOOST_FIXTURE_TEST_CASE(exception_in_divideNumbers_test, ClassExampleFixture) {
-  //
-  BOOST_CHECK_EXCEPTION(example_class.divideNumbers(1.0, 0.0), Elements::Exception,
-                        // below is a lambda function used as a predicate to check the exception error message
-                        [](const Elements::Exception& e) {
-                          string exception_str = e.what();
-                          return exception_str.find("exception in ClassExample::divideNumbers") != string::npos;
-                        });
-}
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/ElementsExamples/tests/src/Boost/FunctionExample2_test.cpp b/ElementsExamples/tests/src/Boost/FunctionExample2_test.cpp
deleted file mode 100644
index e197ced5..00000000
--- a/ElementsExamples/tests/src/Boost/FunctionExample2_test.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * @file functionExample2_test.cpp
- *
- * Created on: Feb 22nd, 2017
- *     Author: Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include "ElementsExamples/functionExample2.h"
-
-#include <boost/test/test_tools.hpp>
-#include <boost/test/unit_test.hpp>
-
-using Elements::Examples::functionExample2;
-
-BOOST_AUTO_TEST_SUITE(FunctionExample2TestSuite)
-
-BOOST_AUTO_TEST_CASE(Value) {
-  BOOST_CHECK(functionExample2(3) == 9);
-}
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/ElementsExamples/tests/src/Boost/FunctionExample_test.cpp b/ElementsExamples/tests/src/Boost/FunctionExample_test.cpp
deleted file mode 100644
index 8d3e11cb..00000000
--- a/ElementsExamples/tests/src/Boost/FunctionExample_test.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * @file functionExample_test.cpp
- *
- * Created on: Feb 22nd, 2017
- *     Author: Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include "ElementsExamples/functionExample.h"
-
-#include <boost/test/test_tools.hpp>
-#include <boost/test/unit_test.hpp>
-
-using Elements::Examples::functionExample;
-
-BOOST_AUTO_TEST_SUITE(FunctionExampleTestSuite)
-
-BOOST_AUTO_TEST_CASE(Value) {
-  BOOST_CHECK(functionExample(3) == 9);
-}
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/ElementsExamples/tests/src/Boost/ModuleInfo_test.cpp b/ElementsExamples/tests/src/Boost/ModuleInfo_test.cpp
deleted file mode 100644
index 8ad10fcc..00000000
--- a/ElementsExamples/tests/src/Boost/ModuleInfo_test.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * @file ClassExample_test.cpp
- *
- * Created on: Aug 12, 2013Jun 20, 2013
- *     Author: Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include "ElementsExamples/ModuleInfo.h"
-
-#include <string>  // for std::string
-
-#include <boost/test/unit_test.hpp>
-
-#include "ThisProject.h"
-
-//-----------------------------------------------------------------------------
-
-/*
- * Fixture to compare the test result against reference values
- */
-struct ModuleInfoFixture {
-
-  ModuleInfoFixture() {
-    // call the constructor
-  }
-
-  ~ModuleInfoFixture() {
-    // delete fixture object
-  }
-};
-
-//-----------------------------------------------------------------------------
-
-BOOST_AUTO_TEST_SUITE(ModuleInfo_test)
-
-//-----------------------------------------------------------------------------
-
-BOOST_FIXTURE_TEST_CASE(ModuleName_test, ModuleInfoFixture) {
-  if (THIS_PROJECT_USE_SOVERSION) {
-    BOOST_CHECK_EQUAL(Elements::Examples::getModuleInfo().name(),
-                      std::string(Elements::System::LIB_PREFIX + "ElementsExamples" + Elements::System::LIB_SUFFIX +
-                                  "." + THIS_PROJECT_ORIGINAL_VERSION));
-  } else {
-    BOOST_CHECK_EQUAL(Elements::Examples::getModuleInfo().name(),
-                      std::string(Elements::System::LIB_PREFIX + "ElementsExamples" + Elements::System::LIB_SUFFIX));
-  }
-}
-
-//-----------------------------------------------------------------------------
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/ElementsExamples/tests/src/Boost/PiCalculator_test.cpp b/ElementsExamples/tests/src/Boost/PiCalculator_test.cpp
deleted file mode 100644
index 80636b2e..00000000
--- a/ElementsExamples/tests/src/Boost/PiCalculator_test.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Rectangle_test.cpp
- *
- *  Created on: Dec 17, 2019
- *      Author: Hubert Degaudenzi
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include "ElementsExamples/PiCalculator.h"  // Access the objects you want to test
-
-#include <boost/test/unit_test.hpp>
-#include <iostream>
-
-using Elements::Examples::PiCalculator;
-
-// Starts a test suite and name it.
-BOOST_AUTO_TEST_SUITE(PiCalculator_test_suite)
-
-void callBackFunction(double pi) {
-
-  std::cout << "Here is the pi value: " << pi << std::endl;
-}
-
-BOOST_AUTO_TEST_CASE(Creation_test) {
-
-  auto pc = PiCalculator();
-
-  pc.setShowResultCallback(callBackFunction);
-
-  pc.calculate(10);
-}
-
-// Ends the test suite
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/ElementsExamples/tests/src/Boost/Rectangle_test.cpp b/ElementsExamples/tests/src/Boost/Rectangle_test.cpp
deleted file mode 100644
index ca818e2d..00000000
--- a/ElementsExamples/tests/src/Boost/Rectangle_test.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Rectangle_test.cpp
- *
- *  Created on: Dec 17, 2019
- *      Author: Hubert Degaudenzi
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include "ElementsExamples/Rectangle.h"  // Access the objects you want to test
-
-#include <boost/test/unit_test.hpp>
-
-using Elements::Examples::Rectangle;
-
-// Starts a test suite and name it.
-BOOST_AUTO_TEST_SUITE(Rectangle_test_suite)
-
-BOOST_AUTO_TEST_CASE(Dimension_test) {
-
-  auto r = Rectangle(1, 1, 3, 2);
-
-  BOOST_CHECK_EQUAL(r.getLength(), 2);
-  BOOST_CHECK_EQUAL(r.getHeight(), 1);
-}
-
-BOOST_AUTO_TEST_CASE(Area_test) {
-
-  auto r = Rectangle(1, 1, 3, 2);
-
-  BOOST_CHECK_EQUAL(r.getArea(), 2);
-}
-
-BOOST_AUTO_TEST_CASE(Move_test) {
-
-  auto r = Rectangle(1, 1, 3, 2);
-
-  r.move(4, 5);
-
-  BOOST_CHECK_EQUAL(r.getArea(), 2);
-  BOOST_CHECK_EQUAL(r.getLength(), 2);
-  BOOST_CHECK_EQUAL(r.getHeight(), 1);
-}
-
-// Ends the test suite
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/ElementsExamples/tests/src/Boost/TestEnvironment_test.cpp b/ElementsExamples/tests/src/Boost/TestEnvironment_test.cpp
deleted file mode 100644
index c1a33533..00000000
--- a/ElementsExamples/tests/src/Boost/TestEnvironment_test.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * UnitTestExample_test.cpp
- *
- *  Created on: Sep 22, 2015
- *      Author: fdubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <boost/test/unit_test.hpp>  // Gives access to the unit test framework.
-#include <iostream>                  // for cout, endl
-#include <string>
-
-#include "ElementsKernel/Environment.h"  // for Environment
-
-// Starts a test suite and name it.
-BOOST_AUTO_TEST_SUITE(TestEnvironment_test_suite)
-
-BOOST_AUTO_TEST_CASE(MyEnv_test) {
-
-  Elements::Environment current;
-
-  std::cout << "MYTESTENV: " << current["MYTESTENV"] << std::endl;
-
-  BOOST_CHECK_EQUAL(std::string(current["MYTESTENV"]), "FooBar");
-  BOOST_CHECK(std::string(current["MYTESTENV"]) == "FooBar");
-}
-
-// Ends the test suite
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/ElementsExamples/tests/src/Boost/TestMain.cpp b/ElementsExamples/tests/src/Boost/TestMain.cpp
deleted file mode 100644
index 6635ca6a..00000000
--- a/ElementsExamples/tests/src/Boost/TestMain.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * @file TestMain.cpp
- *
- * Created on: Aug 12, 2013Jun 20, 2013
- *     Author: Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#define BOOST_TEST_DYN_LINK
-#define BOOST_TEST_MODULE ElementsExamples Test Suite
-#include <boost/test/unit_test.hpp>
diff --git a/ElementsExamples/tests/src/Boost/UnitTestExample_test.cpp b/ElementsExamples/tests/src/Boost/UnitTestExample_test.cpp
deleted file mode 100644
index 26303d3f..00000000
--- a/ElementsExamples/tests/src/Boost/UnitTestExample_test.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * UnitTestExample_test.cpp
- *
- *  Created on: Sep 22, 2015
- *      Author: fdubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include "ElementsExamples/UnitTestExample.h"  // Access the objects you want to test
-
-#include <vector>  // for vector
-
-#include <boost/test/unit_test.hpp>  // Gives access to the unit test framework.
-
-#include "ElementsKernel/Exception.h"  // Exception
-
-using Elements::Examples::UnitTestExample;
-using std::vector;
-
-// Starts a test suite and name it.
-BOOST_AUTO_TEST_SUITE(UnitTestExample_test_suite)
-
-BOOST_AUTO_TEST_CASE(median_test) {
-  UnitTestExample     tested_object{};
-  vector<vector<int>> input_vec{{1, 2, 3, 10, 101, 102},
-                                {1, 2, 3, 11, 101, 102, 103},
-                                {1, 2, 3, 10, 101, 102, 103, 500},
-                                {1, 2, 3, 11, 101, 102, 103, 500, 501}};
-  vector<double>      expected_result{6.5, 11, 55.5, 101};
-
-  for (size_t test_id = 0; test_id < 4; ++test_id) {
-    BOOST_CHECK_EQUAL(expected_result[test_id], tested_object.average(input_vec[test_id]));
-  }
-}
-
-BOOST_AUTO_TEST_CASE(order_test) {
-  UnitTestExample tested_object{};
-  vector<int>     input_vec_orderd{1, 2, 3, 11, 101, 102, 103};
-  vector<int>     input_vec{103, 101, 2, 1, 3, 11, 102};
-  double          expected_result{11};
-
-  BOOST_CHECK_EQUAL(expected_result, tested_object.average(input_vec_orderd));
-  BOOST_CHECK_EQUAL(expected_result, tested_object.average(input_vec));
-}
-
-BOOST_AUTO_TEST_CASE(mean_test) {
-  UnitTestExample     tested_object{};
-  vector<vector<int>> input_vec{{1}, {1, 2}, {1, 2, 4}, {1, 2, 4, 8}, {1, 2, 4, 8, 16}};
-  vector<double>      expected_result{1.0, 1.5, 2.33333333333333333, 3.75, 6.2};
-  double              local_tolerence{1e-10};
-
-  for (size_t test_id = 0; test_id < 5; ++test_id) {
-    BOOST_CHECK_CLOSE(expected_result[test_id], tested_object.average(input_vec[test_id]), local_tolerence);
-  }
-}
-
-BOOST_AUTO_TEST_CASE(exception_test) {
-  UnitTestExample tested_object{};
-  vector<int>     input_vec{};
-
-  BOOST_CHECK_THROW(tested_object.average(input_vec), Elements::Exception);
-}
-
-// Ends the test suite
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/ElementsExamples/tests/src/Boost/crashingFunction_test.cpp b/ElementsExamples/tests/src/Boost/crashingFunction_test.cpp
deleted file mode 100644
index 25670eb8..00000000
--- a/ElementsExamples/tests/src/Boost/crashingFunction_test.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Rectangle_test.cpp
- *
- *  Created on: Dec 17, 2019
- *      Author: Hubert Degaudenzi
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include "ElementsExamples/crashingFunction.h"  // Access the objects you want to test
-
-#include <boost/test/unit_test.hpp>
-#include <iostream>
-#include <stdexcept>  // for the logic_error
-
-using Elements::Examples::crashingFunction;
-
-// Starts a test suite and name it.
-BOOST_AUTO_TEST_SUITE(crashingFunction_test_suite)
-
-BOOST_AUTO_TEST_CASE(Call_test) {
-
-  BOOST_CHECK_THROW(crashingFunction(), std::logic_error);
-}
-
-// Ends the test suite
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/ElementsExamples/tests/src/CppUnit/ClassExample2_test.cpp b/ElementsExamples/tests/src/CppUnit/ClassExample2_test.cpp
deleted file mode 100644
index 2b66c2eb..00000000
--- a/ElementsExamples/tests/src/CppUnit/ClassExample2_test.cpp
+++ /dev/null
@@ -1,117 +0,0 @@
-/**
- * @file ClassExample_test.cpp
- *
- * Created on: Aug 12, 2013 Jun 20, 2013
- *     Author: Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <iostream>
-#include <string>  // for string
-
-#include "ElementsExamples/ClassExample2.h"
-#include <cppunit/TestCase.h>
-#include <cppunit/TestFixture.h>
-#include <cppunit/extensions/HelperMacros.h>
-
-#include "ElementsKernel/Exception.h"
-#include "ElementsKernel/Real.h"  // Provides isEqual
-
-using Elements::Examples::ClassExample2;
-using std::string;
-
-/*
- * Fixture to compare the test result against reference values
- */
-class ClassExampleSuite : public CppUnit::TestFixture {
-
-  CPPUNIT_TEST_SUITE(ClassExampleSuite);
-
-  CPPUNIT_TEST(fundamentalTypeMethodTest);
-  CPPUNIT_TEST(fundamentalTypeMethodSecondTest);
-  CPPUNIT_TEST(gettersTest);
-  CPPUNIT_TEST(exceptionInDivideNumbersTest);
-
-  CPPUNIT_TEST_SUITE_END();
-
-public:
-  void setUp() override;
-  void tearDown() override;
-  ClassExampleSuite() = default;
-
-protected:
-  void fundamentalTypeMethodTest();
-  void fundamentalTypeMethodSecondTest();
-  void gettersTest();
-  void exceptionInDivideNumbersTest();
-
-private:
-  // Elements::ClassExample m_class_example {};
-
-  // expected static string (hard coded in .cpp file!)
-  string m_expected_static_string{"This is a static field example"};
-
-  // Some numbers to feed the constructor
-  const int    m_source_id{123456789};
-  const double m_ra{266.40506655};
-  const double m_input_variable{1.273645899};
-
-  // Number to test the methods
-  const double m_expected_result{1.273645899};
-
-  ClassExample2 m_class_example = ClassExample2::factoryMethod(m_source_id, m_ra);
-};
-
-//-----------------------------------------------------------------------------
-
-void ClassExampleSuite::setUp() {}
-
-void ClassExampleSuite::tearDown() {}
-
-//-----------------------------------------------------------------------------
-
-void ClassExampleSuite::gettersTest() {
-
-  CPPUNIT_ASSERT(m_source_id == m_class_example.getSourceId());
-}
-
-void ClassExampleSuite::fundamentalTypeMethodTest() {
-
-  CPPUNIT_ASSERT_DOUBLES_EQUAL(m_expected_result, m_class_example.fundamentalTypeMethod(m_input_variable),
-                               Elements::DBL_DEFAULT_TEST_TOLERANCE);
-}
-
-void ClassExampleSuite::fundamentalTypeMethodSecondTest() {
-
-  CPPUNIT_ASSERT(Elements::isEqual(m_expected_result, m_class_example.fundamentalTypeMethod(m_input_variable)));
-}
-
-void ClassExampleSuite::exceptionInDivideNumbersTest() {
-
-  bool exception = false;
-  try {
-    m_class_example.divideNumbers(1.0, 0.0);
-  } catch (const Elements::Exception& e) {
-    // exception = true;
-    string exception_str = e.what();
-    exception            = (exception_str.find("exception in ClassExample::divideNumbers") != string::npos);
-  }
-  CPPUNIT_ASSERT(exception);
-}
-
-//-----------------------------------------------------------------------------
-
-CPPUNIT_TEST_SUITE_REGISTRATION(ClassExampleSuite);
diff --git a/ElementsExamples/tests/src/CppUnit/ClassExample_test.cpp b/ElementsExamples/tests/src/CppUnit/ClassExample_test.cpp
deleted file mode 100644
index 8aa2811d..00000000
--- a/ElementsExamples/tests/src/CppUnit/ClassExample_test.cpp
+++ /dev/null
@@ -1,117 +0,0 @@
-/**
- * @file ClassExample_test.cpp
- *
- * Created on: Aug 12, 2013 Jun 20, 2013
- *     Author: Pierre Dubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <iostream>
-#include <string>  // for string
-
-#include "ElementsExamples/ClassExample.h"
-#include <cppunit/TestCase.h>
-#include <cppunit/TestFixture.h>
-#include <cppunit/extensions/HelperMacros.h>
-
-#include "ElementsKernel/Exception.h"
-#include "ElementsKernel/Real.h"  // Provides isEqual
-
-using Elements::Examples::ClassExample;
-using std::string;
-
-/*
- * Fixture to compare the test result against reference values
- */
-class ClassExampleSuite : public CppUnit::TestFixture {
-
-  CPPUNIT_TEST_SUITE(ClassExampleSuite);
-
-  CPPUNIT_TEST(fundamentalTypeMethodTest);
-  CPPUNIT_TEST(fundamentalTypeMethodSecondTest);
-  CPPUNIT_TEST(gettersTest);
-  CPPUNIT_TEST(exceptionInDivideNumbersTest);
-
-  CPPUNIT_TEST_SUITE_END();
-
-public:
-  void setUp() override;
-  void tearDown() override;
-  ClassExampleSuite() = default;
-
-protected:
-  void fundamentalTypeMethodTest();
-  void fundamentalTypeMethodSecondTest();
-  void gettersTest();
-  void exceptionInDivideNumbersTest();
-
-private:
-  // Elements::ClassExample m_class_example {};
-
-  // expected static string (hard coded in .cpp file!)
-  string m_expected_static_string{"This is a static field example"};
-
-  // Some numbers to feed the constructor
-  const int    m_source_id{123456789};
-  const double m_ra{266.40506655};
-  const double m_input_variable{1.273645899};
-
-  // Number to test the methods
-  const double m_expected_result{1.273645899};
-
-  ClassExample m_class_example = ClassExample::factoryMethod(m_source_id, m_ra);
-};
-
-//-----------------------------------------------------------------------------
-
-void ClassExampleSuite::setUp() {}
-
-void ClassExampleSuite::tearDown() {}
-
-//-----------------------------------------------------------------------------
-
-void ClassExampleSuite::gettersTest() {
-
-  CPPUNIT_ASSERT(m_source_id == m_class_example.getSourceId());
-}
-
-void ClassExampleSuite::fundamentalTypeMethodTest() {
-
-  CPPUNIT_ASSERT_DOUBLES_EQUAL(m_expected_result, m_class_example.fundamentalTypeMethod(m_input_variable),
-                               Elements::DBL_DEFAULT_TEST_TOLERANCE);
-}
-
-void ClassExampleSuite::fundamentalTypeMethodSecondTest() {
-
-  CPPUNIT_ASSERT(Elements::isEqual(m_expected_result, m_class_example.fundamentalTypeMethod(m_input_variable)));
-}
-
-void ClassExampleSuite::exceptionInDivideNumbersTest() {
-
-  bool exception = false;
-  try {
-    m_class_example.divideNumbers(1.0, 0.0);
-  } catch (const Elements::Exception& e) {
-    // exception = true;
-    string exception_str = e.what();
-    exception            = (exception_str.find("exception in ClassExample::divideNumbers") != string::npos);
-  }
-  CPPUNIT_ASSERT(exception);
-}
-
-//-----------------------------------------------------------------------------
-
-CPPUNIT_TEST_SUITE_REGISTRATION(ClassExampleSuite);
diff --git a/ElementsExamples/tests/src/CppUnit/TestMain.cpp b/ElementsExamples/tests/src/CppUnit/TestMain.cpp
deleted file mode 100644
index fdadfa12..00000000
--- a/ElementsExamples/tests/src/CppUnit/TestMain.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * @file TestMain.cpp
- *
- * @date Aug 7, 2014
- * @author hubert
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include <cppunit/extensions/TestFactoryRegistry.h>
-#include <cppunit/ui/text/TestRunner.h>
-
-#include "ElementsKernel/Unused.h"
-
-int main(ELEMENTS_UNUSED int argc, ELEMENTS_UNUSED char** argv) {
-  CppUnit::TextUi::TestRunner   runner;
-  CppUnit::TestFactoryRegistry& registry = CppUnit::TestFactoryRegistry::getRegistry();
-  runner.addTest(registry.makeTest());
-  bool wasSuccessful = runner.run("", false);
-  return (wasSuccessful ? 0 : 1);
-}
diff --git a/ElementsExamples/tests/src/GMock/DataSourceInterfaceMock.h b/ElementsExamples/tests/src/GMock/DataSourceInterfaceMock.h
deleted file mode 100644
index 3901806f..00000000
--- a/ElementsExamples/tests/src/GMock/DataSourceInterfaceMock.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- * @file DataSourceInterfaceMock.h
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifndef ELEMENTSEXAMPLES_TESTS_SRC_GMOCK_DATASOURCEINTERFACEMOCK_H_
-#define ELEMENTSEXAMPLES_TESTS_SRC_GMOCK_DATASOURCEINTERFACEMOCK_H_
-
-#include <cstddef>
-#include <gmock/gmock.h>
-
-#include "ElementsExamples/DataSourceUser.h"
-
-namespace Elements {
-namespace Examples {
-/**
- * @class Euclid::ExampleModule::DataSourceInterfaceMock
- *
- * @brief Mock object implementing the DataSourceInterface.
- */
-class DataSourceInterfaceMock : public DataSourceInterface {
-public:
-  virtual ~DataSourceInterfaceMock() = default;
-
-  MOCK_CONST_METHOD0(countRecords, std::size_t());
-
-  MOCK_CONST_METHOD1(getRecordValue, double(std::size_t));
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-#endif  // ELEMENTSEXAMPLES_TESTS_SRC_GMOCK_DATASOURCEINTERFACEMOCK_H_
diff --git a/ElementsExamples/tests/src/GMock/DataSourceUserTemplatedTypeMock.h b/ElementsExamples/tests/src/GMock/DataSourceUserTemplatedTypeMock.h
deleted file mode 100644
index b0c8eacc..00000000
--- a/ElementsExamples/tests/src/GMock/DataSourceUserTemplatedTypeMock.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * @file DataSourceUserTemplatedTypeMock.h
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifndef ELEMENTSEXAMPLES_TESTS_SRC_GMOCK_DATASOURCEUSERTEMPLATEDTYPEMOCK_H_
-#define ELEMENTSEXAMPLES_TESTS_SRC_GMOCK_DATASOURCEUSERTEMPLATEDTYPEMOCK_H_
-
-#include <cstddef>
-#include <gmock/gmock.h>
-
-namespace Elements {
-namespace Examples {
-/**
- * @class Euclid::ExampleModule::DataSourceUserTemplatedTypeMock
- *
- * @brief Mock object implementing the methods required to be used as
- * template type for
- * TemplatedDataSourceUser::sumRecords<T>(const T& data_source).
- */
-class DataSourceUserTemplatedTypeMock {
-public:
-  virtual ~DataSourceUserTemplatedTypeMock() = default;
-
-  MOCK_CONST_METHOD0(countRecords, std::size_t());
-
-  MOCK_CONST_METHOD1(getRecordValue, double(std::size_t));
-};
-
-}  // namespace Examples
-}  // namespace Elements
-
-#endif  // ELEMENTSEXAMPLES_TESTS_SRC_GMOCK_DATASOURCEUSERTEMPLATEDTYPEMOCK_H_
diff --git a/ElementsExamples/tests/src/GMock/DataSourceUser_test.cpp b/ElementsExamples/tests/src/GMock/DataSourceUser_test.cpp
deleted file mode 100644
index e4aed4bd..00000000
--- a/ElementsExamples/tests/src/GMock/DataSourceUser_test.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * DataSourceUser_test.cpp
- *
- *  Created on: Sep 23, 2015
- *      Author: fdubath
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include "ElementsExamples/DataSourceUser.h"  // Access the objects you want to test
-
-#include <boost/test/unit_test.hpp>
-#include <cstddef>
-#include <gmock/gmock.h>
-
-#include "ElementsKernel/EnableGMock.h"  // initialize the gmock framework
-#include "ElementsKernel/Real.h"
-
-#include "DataSourceInterfaceMock.h"
-
-using std::size_t;
-using testing::Return;
-
-BOOST_AUTO_TEST_SUITE(DataSourceUser_test_suite)
-
-BOOST_AUTO_TEST_CASE(sumRecords_test) {
-
-  // Setup mock
-  Elements::Examples::DataSourceInterfaceMock data_source_mock;
-
-  EXPECT_CALL(data_source_mock, countRecords()).Times(1).WillOnce(Return(5));
-
-  for (size_t index = 0; index < 5; ++index) {
-    EXPECT_CALL(data_source_mock, getRecordValue(index)).Times(1).WillOnce(Return(static_cast<double>(index) + 1.));
-  }
-
-  // object to test
-  Elements::Examples::DataSourceUser user{};
-  double                             result = user.sumRecords(data_source_mock);
-
-  BOOST_CHECK_MESSAGE(Elements::isEqual(result, 15.), "Expected value :" << 15. << " Actual value :" << result);
-}
-
-// Ends the test suite
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/ElementsExamples/tests/src/GMock/TemplatedDataSourceUser_test.cpp b/ElementsExamples/tests/src/GMock/TemplatedDataSourceUser_test.cpp
deleted file mode 100644
index 70026491..00000000
--- a/ElementsExamples/tests/src/GMock/TemplatedDataSourceUser_test.cpp
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * @file TemplatedDataSourceUser_test.cpp
- *
- * @copyright 2012-2020 Euclid Science Ground Segment
- *
- * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
- * Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option)
- * any later version.
- *
- * This library 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 Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#include "ElementsExamples/TemplatedDataSourceUser.h"  // Access the objects you want to test
-
-#include "ElementsKernel/EnableGMock.h"  // initialize the gmock framework
-#include "ElementsKernel/Real.h"         // isEqual
-
-#include "DataSourceUserTemplatedTypeMock.h"  // Access the needed mock objects.
-
-using Elements::Examples::DataSourceUserTemplatedTypeMock;
-using testing::Return;
-
-BOOST_AUTO_TEST_SUITE(TemplatedDataSourceUser_test_suite)
-
-BOOST_AUTO_TEST_CASE(sumRecords_test) {
-  // Setup mock
-  DataSourceUserTemplatedTypeMock data_source_mock;
-  EXPECT_CALL(data_source_mock, countRecords()).Times(1).WillOnce(Return(5));
-  for (size_t index = 0; index < 5; ++index) {
-    EXPECT_CALL(data_source_mock, getRecordValue(index)).Times(1).WillOnce(Return(static_cast<double>(index) + 1.));
-  }
-
-  // object to test
-  Elements::Examples::TemplatedDataSourceUser user{};
-  double result = user.sumRecords<DataSourceUserTemplatedTypeMock>(data_source_mock);
-
-  BOOST_CHECK_MESSAGE(Elements::isEqual(result, 15.), "Expected value :" << 15 << " Actual value :" << result);
-}
-
-// Ends the test suite
-BOOST_AUTO_TEST_SUITE_END()
