diff --git a/CMakeLists.txt b/CMakeLists.txt
index d81fb7aa3a5f36aa5b976930f304a39b6136386c..4714eab3dccc3d358041aa63ce46334883109d48 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -12,7 +12,11 @@ set(CMAKE_MODULE_PATH
 
 ## OS Specific settings
 include(cmake/os.cmake)
-# provides variables for header hc_compiledata.h
+
+## External projects: analyzer(PODD)
+include(ExternalProject)
+
+# provides variables for HallC header "hc_compiledata.h"
 include(cmake/modules/CompileTimeInfo.cmake)
 
 include(GNUInstallDirs)
@@ -20,13 +24,34 @@ set(INSTALL_CONFIGDIR lib/hcana)
 
 list(APPEND CMAKE_PREFIX_PATH ${CMAKE_INSTALL_PREFIX})
 
-find_package(EXPAT REQUIRED COMPONENTS EXPAT )
-find_package(Threads REQUIRED)
-find_package(ZLIB REQUIRED)
-
-include(ExternalProject)
-add_subdirectory(external)
-find_package(PODD REQUIRED)
+# ---------------
+# PODD
+find_package(PODD)
+#ExternalProject_Add(PODD_project 
+#  GIT_REPOSITORY    https://github.com/whit2333/analyzer.git
+#  GIT_TAG           origin/testing
+#  SOURCE_DIR "${CMAKE_BINARY_DIR}/hallac_PODD-src"
+#  BINARY_DIR "${CMAKE_BINARY_DIR}/hallac_PODD-build"
+#  CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=@CMAKE_INSTALL_PREFIX@" "-DCMAKE_PREFIX_PATH=@CMAKE_INSTALL_PREFIX@"
+#  BUILD_COMMAND ${CMAKE_COMMAND}   --build . -- -j4
+#  USES_TERMINAL_BUILD ON
+#  TEST_COMMAND ""
+#  LOG_DOWNLOAD ON
+#  )
+if(NOT ${PODD_FOUND})
+  message(STATUS "PODD not found. Will download and build analyzer (PODD)")
+  add_subdirectory(external)
+  find_package(PODD)
+    #Rescan becomes a dummy target after first build
+    #this prevents cmake from rebuilding cache/projects on subsequent builds
+    #add_custom_target(Rescan)
+endif()
+
+#add_executable(testapp testapp.cpp )
+#add_dependencies(testapp Rescan)
+#if(${Beaengine_FOUND})
+#    target_link_libraries(testapp ${Beaengine_LIBRARY})
+#endif()
 
 list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS})
 list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS}/etc/cmake)
@@ -58,21 +83,30 @@ install(FILES
 ##############################################
 # Installation
 
-
 #Create a ConfigVersion.cmake file
 include(CMakePackageConfigHelpers)
 
-write_basic_package_version_file(
-  ${CMAKE_CURRENT_BINARY_DIR}/HCANAConfigVersion.cmake
-  VERSION ${PROJECT_VERSION}
-  COMPATIBILITY AnyNewerVersion
+# Install and export targets
+install(EXPORT HCANA-targets
+  FILE HCANATargets.cmake
+  NAMESPACE HCANA::
+  DESTINATION lib/hcana
   )
 
+set(TARGETS_INSTALL_PATH lib/hcana/HCANATargets.cmake)
 configure_package_config_file(${CMAKE_CURRENT_LIST_DIR}/cmake/HCANAConfig.cmake.in
     ${CMAKE_CURRENT_BINARY_DIR}/HCANAConfig.cmake
     INSTALL_DESTINATION ${INSTALL_CONFIGDIR}
+    PATH_VARS TARGETS_INSTALL_PATH
 )
 
+write_basic_package_version_file(
+  ${CMAKE_CURRENT_BINARY_DIR}/HCANAConfigVersion.cmake
+  VERSION ${PROJECT_VERSION}
+  COMPATIBILITY AnyNewerVersion
+  )
+
+
 #Install the config, configversion and custom find modules
 install(FILES
   #    ${CMAKE_CURRENT_LIST_DIR}/cmake/FindRapidJSON.cmake
diff --git a/cmake/HCANAConfig.cmake.in b/cmake/HCANAConfig.cmake.in
index 174aaa282db6fb7eeca0396f02de5a70e8ff0881..57b242a892bb56cb74876ab27c928a6054f5427a 100644
--- a/cmake/HCANAConfig.cmake.in
+++ b/cmake/HCANAConfig.cmake.in
@@ -4,6 +4,9 @@ include("@PACKAGE_TARGETS_INSTALL_PATH@")
 
 check_required_components(HCANA)
 
+find_package(PODD REQUIRED)
+message(STATUS "Found HCANA")
+
 #get_filename_component(HCANA_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
 #include(CMakeFindDependencyMacro)
 #
diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt
index d66c2ad5be80ceaa93bfba0a718c230bb773e0d9..8e22c5bae4ac780d66a9957a61e66ec24f0b9bfa 100644
--- a/external/CMakeLists.txt
+++ b/external/CMakeLists.txt
@@ -1,11 +1,6 @@
 cmake_minimum_required(VERSION 3.1)
 
-#include(ExternalProject)
-
-##############
-##  GFLAGS  ##
-##############
-message(STATUS "Subproject: PODD...")
+#message(STATUS "Subproject: PODD...")
 # Download and unpack gflags at configure time
 configure_file(
   ${CMAKE_CURRENT_SOURCE_DIR}/PODD.CMakeLists.txt
@@ -21,20 +16,16 @@ execute_process(COMMAND ${CMAKE_COMMAND} --build .
   RESULT_VARIABLE result
   WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/PODD-download)
 if(result)
-  message(FATAL_ERROR "Build step for PODD failed: ${result}")
+  message(FATAL_ERROR "Download step for exteranl PODD build failed: ${result}")
 endif()
 
-#set(GFLAGS_NAMESPACE "gflags")
-#set(GFLAGS_INSTALL_STATIC_LIBS ON)
-#set(GFLAGS_INSTALL_HEADERS ON)
-#set(GFLAGS_IS_SUBPROJECT TRUE)
 add_subdirectory(
   ${CMAKE_BINARY_DIR}/hallac_PODD-src
   ${CMAKE_BINARY_DIR}/hallac_PODD-build)
 
-execute_process(COMMAND "rm -r *"
-  RESULT_VARIABLE result
-  WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/PODD-download)
+#execute_process(COMMAND "rm -r *"
+#  RESULT_VARIABLE result
+#  WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/PODD-download)
 
 message(STATUS "Subproject: PODD...DONE")
 
diff --git a/external/PODD.CMakeLists.txt b/external/PODD.CMakeLists.txt
index c149508ea70c7cf0f5b48100d8f4de2828f76f96..b14bddd44368821455e308920fb4382e0189f60b 100644
--- a/external/PODD.CMakeLists.txt
+++ b/external/PODD.CMakeLists.txt
@@ -1,8 +1,8 @@
 cmake_minimum_required(VERSION 3.5)
 
 # simplify variable expansion
-cmake_policy(SET CMP0053 NEW)
-cmake_policy(SET CMP0010 NEW)
+#cmake_policy(SET CMP0053 NEW)
+#cmake_policy(SET CMP0010 NEW)
 
 project(PODD-download NONE)
 
@@ -14,7 +14,10 @@ ExternalProject_Add(PODD_project
       SOURCE_DIR "${CMAKE_BINARY_DIR}/hallac_PODD-src"
       BINARY_DIR "${CMAKE_BINARY_DIR}/hallac_PODD-build"
       CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=@CMAKE_INSTALL_PREFIX@" "-DCMAKE_PREFIX_PATH=@CMAKE_INSTALL_PREFIX@"
-      BUILD_COMMAND ${CMAKE_COMMAND} --build . -- -j4
+      BUILD_COMMAND ${CMAKE_COMMAND}   --build . -- -j4
+      USES_TERMINAL_BUILD ON
       TEST_COMMAND ""
       LOG_DOWNLOAD ON
       )
+ExternalProject_Add_StepTargets(PODD_project install)
+
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 095e425d1b310392cf3d4e51d3d922694f88b384..882142afd9533334d46c851d1232d8fd3f54551d 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,5 +1,6 @@
 cmake_minimum_required(VERSION 3.5)
 
+
 set(HCANA_src 
 Scaler9001.cxx Scaler9250.cxx THcAerogel.cxx THcAerogelHit.cxx THcAnalyzer.cxx THcBCMCurrent.cxx THcCherenkov.cxx
 THcCherenkovHit.cxx THcCoinTime.cxx THcConfigEvtHandler.cxx THcDC.cxx THcDCHit.cxx THcDCLookupTTDConv.cxx THcDCTimeToDistConv.cxx
@@ -39,12 +40,13 @@ set(PCM_FILE  ${CMAKE_CURRENT_BINARY_DIR}/HallCDict_rdict.pcm)
 #    SOVERSION "${lib_MAJOR_VERSION}"
 #    SUFFIX ".so")
 
-ADD_CUSTOM_TARGET(HallC_ROOTDICTS DEPENDS ${HCANA_src} ${headers} include/HallC_LinkDef.h HallCDict.cxx)
+add_custom_target(HallC_ROOTDICTS DEPENDS ${HCANA_src} ${headers} include/HallC_LinkDef.h HallCDict.cxx)
+
 add_library(HallC SHARED
   ${HCANA_src} HallCDict.cxx
   )
 
-add_library(HCANA::HallC ALIAS HallC)
+#add_library(HCANA::HallC ALIAS HallC)
 
 #Set target properties
 target_include_directories(HallC
@@ -62,8 +64,8 @@ target_compile_options(HallC PRIVATE $<$<CXX_COMPILER_ID:GNU>:-DHAS_SSTREAM=1>)
 
 target_link_libraries(HallC
   PUBLIC ${ROOT_LIBRARIES} 
-  PUBLIC HallA
-  PUBLIC dc
+  PUBLIC PODD::HallA
+  PUBLIC PODD::dc
 )
 #This is required so that the exported target has the name JSONUtils and not jsonutils
 #set_target_properties(HallC PROPERTIES EXPORT_NAME hallC)