diff --git a/.github/workflows/ba-linux.yml b/.github/workflows/ba-linux.yml
index 15e38f4c69b3067820efb30a3b66ec0bec5b0574..bd205ebbf7fa468055c4eaf98dc360879c44e92a 100644
--- a/.github/workflows/ba-linux.yml
+++ b/.github/workflows/ba-linux.yml
@@ -51,9 +51,9 @@ jobs:
       run: |
         sudo apt-get update
         sudo apt-get install -y build-essential\
-          gfortran cmake libgsl-dev libboost-all-dev libfftw3-dev libtiff5-dev libcerf-dev \
-          qt5-default libqt5designercomponents5 qttools5-dev libqt5svg5-dev \
-          ccache
+          gfortran cmake ccache \
+          libgsl-dev libboost-all-dev libfftw3-dev libtiff5-dev libcerf-dev libeigen3-dev \
+          qt5-default libqt5designercomponents5 qttools5-dev libqt5svg5-dev
     - name: Install Python packages
       run: |
         python -m pip install --upgrade pip
diff --git a/.github/workflows/ba-macos.yml b/.github/workflows/ba-macos.yml
index 3f96fcef9eb2561c64083ae4df67032e716f6bd2..58a677e84c64a77c2b941ea985f16ef6966f29a0 100644
--- a/.github/workflows/ba-macos.yml
+++ b/.github/workflows/ba-macos.yml
@@ -49,7 +49,7 @@ jobs:
 
     - name: setup dependencies
       run: |
-        brew install cmake fftw gsl boost qt5 libtiff libcerf ccache
+        brew install cmake ccache fftw gsl boost qt5 libtiff libcerf eigen
         echo "Qt5 is installed to"
         echo $QTDIR
     - name: Install Python packages
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index 126f7fd473b4213baa2dcc0e0e5e240e40007be0..0000000000000000000000000000000000000000
--- a/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "ThirdParty/Core/eigen3"]
-	path = ThirdParty/Core/eigen3
-	url = https://gitlab.com/libeigen/eigen.git 
diff --git a/ThirdParty/Core/eigen3 b/ThirdParty/Core/eigen3
deleted file mode 160000
index 0dd9643ad547d3dd2e23ded1d3376d0f7bdc8ada..0000000000000000000000000000000000000000
--- a/ThirdParty/Core/eigen3
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 0dd9643ad547d3dd2e23ded1d3376d0f7bdc8ada
diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake
index c71ae2bc5d9ad728e48f1d7c0c737d544fb5201a..fad9bcf76da9e1141c5b4ae444d49e6128270fcb 100644
--- a/cmake/modules/SearchInstalledSoftware.cmake
+++ b/cmake/modules/SearchInstalledSoftware.cmake
@@ -7,15 +7,10 @@ endif()
 find_package(Threads REQUIRED)
 find_package(FFTW3 REQUIRED)
 find_package(GSL REQUIRED)
+find_package(Eigen3 3.3 REQUIRED) # no need for FindEigen3, as Eigen provides Eigen3Config.cmake
 
 find_package(Cerf REQUIRED)
 message(STATUS "Cerf found=${Cerf_FOUND} lib=${Cerf_LIBRARIES} inc=${Cerf_INCLUDE_DIR} version={Cerf_VERSION}")
-# --- Eigen3 is a git submodule; throw an error if submodule is not initialized ---
-set(EIGEN3_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/ThirdParty/Core/eigen3" CACHE INTERNAL "")
-if( NOT EXISTS "${EIGEN3_INCLUDE_DIR}/.git" )
-    message( FATAL_ERROR "Eigen3 submodule was not initialized. Please run
-                          git submodule update --init")
-endif()
 
 # --- Boost ---
 set(Boost_NO_BOOST_CMAKE ON) # prevent shortcut