diff --git a/CMakeLists.txt b/CMakeLists.txt
index fa9e761fe0456225b8496789a7366ef655a30ee1..5a8587260bf2517498871e993a52743ae8d82a8b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -108,13 +108,7 @@ set(CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING
 
 set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
 
-# Here we only need name so for e.g. liblammps_serial.so use lammps_serial
-if(NOT DEFINED TADAH_LAMMPS_LIB)
-    set(TADAH_LAMMPS_LIB "lammps_serial")
-endif()
-
 include(FetchContent)
-
 get_filename_component(BUILD_DIR_NAME ${CMAKE_BINARY_DIR} NAME)
 
 FetchContent_Declare(
@@ -137,15 +131,19 @@ FetchContent_Declare(
     )
 FetchContent_MakeAvailable(Tadah.LIBS)
 
-FetchContent_Declare(
-    Tadah.HPO
-    GIT_REPOSITORY https://git.ecdf.ed.ac.uk/tadah/hpo.git
-    GIT_TAG origin/main
-    SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/HPO
-    PATCH_COMMAND  mkdir -p ${BUILD_DIR_NAME}
-    BINARY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/HPO/${BUILD_DIR_NAME}
-    )
-FetchContent_MakeAvailable(Tadah.HPO)
+if(TADAH_ENABLE_HPO)
+  add_compile_definitions(TADAH_ENABLE_HPO)
+  #FetchContent_Declare(
+  #    Tadah.HPO
+  #    GIT_REPOSITORY https://git.ecdf.ed.ac.uk/tadah/hpo.git
+  #    GIT_TAG origin/main
+  #    SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/HPO
+  #    PATCH_COMMAND  mkdir -p ${BUILD_DIR_NAME}
+  #    BINARY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/HPO/${BUILD_DIR_NAME}
+  #    )
+  #FetchContent_MakeAvailable(Tadah.HPO)
+  add_subdirectory(HPO)
+endif()
 
 file(READ "MLIP/version.h" ver)
 string(REGEX MATCH "TADAH_WORLD_VERSION ([0-9])" _ "${ver}")
@@ -168,6 +166,7 @@ target_link_libraries (tadah PUBLIC config::rc)
 
 add_executable (ta-dah bin/tadah.cpp)
 target_link_libraries(ta-dah PRIVATE tadah)
+target_link_libraries(ta-dah PRIVATE tadah.hpo)
 
 #########################################################################
 if(TADAH_MARCH_NATIVE)
@@ -223,79 +222,16 @@ message(STATUS "${TADAH}: Build with fast math optimisation is ${TADAH_ENABLE_FA
 
 #########################################################################
 if(TADAH_ENABLE_MPI)
-    find_package(MPI REQUIRED)
-    if(MPI_CXX_FOUND)
-        target_link_libraries(ta-dah PUBLIC MPI::MPI_CXX)
-        add_compile_definitions(TADAH_ENABLE_MPI)
-    endif()
+  find_package(MPI REQUIRED)
+  if(MPI_CXX_FOUND)
+    target_link_libraries(ta-dah PUBLIC MPI::MPI_CXX)
+    add_compile_definitions(TADAH_ENABLE_MPI)
+  endif()
 endif()
 message(STATUS "${TADAH}: Build with MPI is ${TADAH_ENABLE_MPI}")
 #########################################################################
 
 #########################################################################
-if(TADAH_ENABLE_HPO)
-    if (NOT TADAH_ENABLE_MPI)
-        if (NOT TADAH_LAMMPS_MPI_STUBS)
-            message(FATAL_ERROR "${TADAH}: You are compiling with TADAH_ENABLE_HPO=ON
-            This option requires either:
-            -DTADAH_ENABLE_MPI=ON (preferred)
-            or providing path to lammps MPI STUBS in the lammps src directory
-            -DTADAH_LAMMPS_MPI_STUBS=/path/to/lammps/src/STUBS")
-        endif()
-        target_include_directories(ta-dah PRIVATE ${TADAH_LAMMPS_MPI_STUBS})
-    endif()
-
-    if (TADAH_ENABLE_MPI AND TADAH_LAMMPS_MPI_STUBS)
-        message(FATAL_ERROR "${TADAH}: Either use:
-        -DTADAH_ENABLE_MPI=ON (preferred)
-        or
-        -DTADAH_LAMMPS_MPI_STUBS=${TADAH_LAMMPS_MPI_STUBS}")
-    endif()
-
-    # c++ need to know which library LAMMPS will use
-    add_compile_definitions(TADAH_LAMMPS_LIB=\"lib${TADAH_LAMMPS_LIB}\")
-
-    # add static libs definitions to our shared lib
-    message(STATUS "${TADAH}: Fetching Dlib from git...")
-    include(FetchContent)
-    FetchContent_Declare(dlib
-        GIT_REPOSITORY https://github.com/davisking/dlib.git
-        GIT_TAG        v19.24
-        )
-    FetchContent_MakeAvailable(dlib)
-
-    target_link_libraries(ta-dah PUBLIC dlib::dlib)
-
-    target_link_libraries(ta-dah PRIVATE "${TADAH_LAMMPS_LIB}")
-
-    # Finalise by setting preprocessor symbol
-    add_compile_definitions(TADAH_ENABLE_HPO)
-
-    file(GLOB_RECURSE hpo_src CONFIGURE_DEPENDS "HPO/*.cpp")
-    target_sources(ta-dah PRIVATE ${hpo_src})
-
-    # add resource lib to the project so we can embed lammps scripts into
-    # the library project
-    # Add resources...
-    cmrc_add_resource_library(
-        hpo-resources 
-        ALIAS hpo::rc
-        NAMESPACE hpo 
-        WHENCE HPO/lammps
-        PREFIX hpo
-        ${PROJECT_SOURCE_DIR}/HPO/lammps/tadah.lata
-        ${PROJECT_SOURCE_DIR}/HPO/lammps/tadah.envol
-        ${PROJECT_SOURCE_DIR}/HPO/lammps/tadah.elastic
-        ${PROJECT_SOURCE_DIR}/HPO/lammps/tadah.surface
-        ${PROJECT_SOURCE_DIR}/HPO/lammps/tadah.usurface
-        ${PROJECT_SOURCE_DIR}/HPO/lammps/tadah.FR_vacancy_at_p
-        ${PROJECT_SOURCE_DIR}/HPO/lammps/tadah.unrelaxed_vacancy_at_p
-        )
-    target_link_libraries(ta-dah PUBLIC hpo::rc)
-    target_link_libraries(ta-dah PUBLIC)
-    target_link_libraries(ta-dah PUBLIC -llapacke)
-    #target_link_libraries(tadah PUBLIC -llapacke)
-endif()
 message(STATUS "${TADAH}: Build with Hyperparameter optimiser is ${TADAH_ENABLE_HPO}")
 #########################################################################