diff --git a/CMakeLists.txt b/CMakeLists.txt
index 209c02b643402d8bf187d67c1e9290bff275e733..49449bafde75d8d608a67972f29aa75d48d24b3f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -25,8 +25,9 @@ endfunction()
 #endif()
 
 if(UNIX)
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++2a")
   #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x")
-  set(CMAKE_MACOSX_RPATH 1)
+  #set(CMAKE_MACOSX_RPATH 1)
 endif(UNIX)
 
 # Avoid cmake warnings about changes in behavior of some Mac OS X path
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index d668f260fc04479100b0fb447cad7c730397af16..335c9d86c071d258cd840cff496c394edb8e29f4 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -1,3 +1,4 @@
+#examples
 cmake_minimum_required(VERSION 2.8)
 
 project(bgslibrary)
@@ -11,7 +12,9 @@ endif()
 message(STATUS "BGSLIBRARY WITH PYTHON SUPPORT: ${BGS_PYTHON_SUPPORT}")
 
 if(UNIX)
-	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x")
+	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++14")
+	#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++2a") #seems to be TOOO modern??
+	#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x")
 endif(UNIX)
 
 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
@@ -41,12 +44,13 @@ endforeach(OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES)
 
 if(UNIX)
 	# add some standard warnings
-	ADD_DEFINITIONS(-Wno-variadic-macros -Wno-long-long -Wall -Wextra -Winit-self -Woverloaded-virtual -Wsign-promo -Wno-unused-parameter -pedantic -Woverloaded-virtual -Wno-unknown-pragmas)
+	#-Woverloaded-virtual #removed temporarily to increase readability of compiler output
+	ADD_DEFINITIONS(-Wno-variadic-macros -Wno-long-long -Wall -Wextra -Winit-self -Wsign-promo -Wno-unused-parameter -pedantic -Woverloaded-virtual -Wno-unknown-pragmas)
 
 	# -ansi does not compile with sjn module
 	#ADD_DEFINITIONS(-ansi)
 
-	# if you like to have warinings about conversions, e.g. double->int or double->float etc., or float compare
+	# if you like to have warnings about conversions, e.g. double->int or double->float etc., or float compare
 	#ADD_DEFINITIONS(-Wconversion -Wfloat-equal)
 endif(UNIX)
 
@@ -58,14 +62,15 @@ message(STATUS "    version: ${OpenCV_VERSION}")
 message(STATUS "    libraries: ${OpenCV_LIBS}")
 message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")
 
-# if(${OpenCV_VERSION} VERSION_EQUAL 3 OR ${OpenCV_VERSION} VERSION_GREATER 3)
-# 	message(FATAL_ERROR "OpenCV version is not compatible: ${OpenCV_VERSION}")
-# endif()
+if(${OpenCV_VERSION} VERSION_EQUAL 3 OR ${OpenCV_VERSION} VERSION_GREATER 3)
+	message(STATUS "WOW! Found OpenCV Version ${OpenCV_VERSION}. SO PROGRESSIVE ;) 		<-- might not be compatible yet\n")
+endif()
 
 if(${OpenCV_VERSION} VERSION_LESS 2.3.1)
 	message(FATAL_ERROR "OpenCV version is not compatible: ${OpenCV_VERSION}")
 endif()
 
+# requires: apt install libarchive-dev
 find_package(LibArchive REQUIRED)
 message(STATUS "LibArchive library status:")
 message(STATUS "    version: ${LibArchive_VERSION}")
@@ -112,6 +117,7 @@ endif()
 
 # GMG is not available in older OpenCV versions
 if(${OpenCV_VERSION} VERSION_LESS 2.4.3)
+	message(WARNING "WTF???????")
 	file(GLOB gmg package_bgs/GMG.cpp)
 	list(REMOVE_ITEM bgs_src ${gmg})
 endif()
@@ -122,8 +128,9 @@ if(BGS_PYTHON_SUPPORT)
 	target_link_libraries(libbgs ${OpenCV_LIBS} ${Boost_LIBRARIES} ${PYTHON_LIBRARIES})
 	target_compile_definitions(libbgs PRIVATE BGS_PYTHON_SUPPORT=1)
 else()
+	message(STATUS "HAHA ${bgs_src}\n\n")
 	#add_library(libbgs STATIC ${sources} ${bgs_src} ${analysis_src})
-	add_library(libbgs STATIC ${bgs_src} ${analysis_src})
+	add_library(libbgs STATIC ${bgs_src} ${analysis_src}) # <<<<<< TODO
 	target_link_libraries(libbgs ${OpenCV_LIBS})
 endif()
 set_property(TARGET libbgs PROPERTY PUBLIC_HEADER ${bgs_include})
@@ -133,7 +140,7 @@ else()
 	set_property(TARGET libbgs PROPERTY OUTPUT_NAME "bgs")
 endif()
 
-add_executable(bgslibrary ${main})
+add_executable(bgslibrary ${main}) # <<<<<< TODO
 target_link_libraries(bgslibrary ${OpenCV_LIBS} libbgs)
 # set_target_properties(bgslibrary PROPERTIES OUTPUT_NAME bgs)
 
diff --git a/src/algorithms/Tapter.cpp b/src/algorithms/Tapter.cpp
index 6d2425af5f13eeb785a889d05e045276f77b64e8..b0ce1936e94b76f1e85bd6aafb279038ecf41e0c 100644
--- a/src/algorithms/Tapter.cpp
+++ b/src/algorithms/Tapter.cpp
@@ -72,7 +72,7 @@ void Tapter::process(const cv::Mat &img_input, cv::Mat &img_output, cv::Mat &img
 
     IplImage *frame = new IplImage(img_input);
 
-    if (firstTime)
+    if (firstTime) // XXX where is this ever set?
     {
         int w = cvGetSize(frame).width;
         int h = cvGetSize(frame).height;
@@ -85,7 +85,7 @@ void Tapter::process(const cv::Mat &img_input, cv::Mat &img_output, cv::Mat &img
     m_pBGModel->setBGModelParameter(1, trainingSensitivity);
     m_pBGModel->setBGModelParameter(2, learningRate);
     m_pBGModel->setBGModelParameter(3, trainingLearningRate);
-    m_pBGModel->setBGModelParameter(5, trainingSteps);
+    m_pBGModel->setBGModelParameter(5, trainingSteps); //xxx Y 5? what happened to 4?
 
     m_pBGModel->UpdateModel(frame);
 
@@ -108,30 +108,30 @@ void Tapter::process(const cv::Mat &img_input, cv::Mat &img_output, cv::Mat &img
     firstTime = false;
 }
 
-void Tapter::saveConfig()
+void Tapter::save_config(cv::FileStorage &fs)
 {
-    CvFileStorage* fs = cvOpenFileStorage(config_xml.c_str(), nullptr, CV_STORAGE_WRITE);
-
-    cvWriteInt(fs, "sensitivity", sensitivity);
-    cvWriteInt(fs, "trainingSensitivity", trainingSensitivity);
-    cvWriteInt(fs, "learningRate", learningRate);
-    cvWriteInt(fs, "trainingLearningRate", trainingLearningRate);
-    cvWriteInt(fs, "trainingSteps", trainingSteps);
-    cvWriteInt(fs, "showOutput", showOutput);
-
-    cvReleaseFileStorage(&fs);
+    //TODO
+    // CvFileStorage* fs = cvOpenFileStorage(config_xml.c_str(), nullptr, CV_STORAGE_WRITE);
+    fs << "sensitivity"         << sensitivity;
+    fs << "trainingSensitivity" << trainingSensitivity;
+    fs << "learningRate"        << learningRate;
+    fs << "trainingLearningRate"<< trainingLearningRate;
+    fs << "trainingSteps"       << trainingSteps;
+    fs << "showOutput"          << showOutput;
 }
 
-void Tapter::loadConfig()
+void Tapter::load_config(cv::FileStorage &fs)
 {
-    CvFileStorage* fs = cvOpenFileStorage(config_xml.c_str(), nullptr, CV_STORAGE_READ);
-
-    sensitivity = cvReadIntByName(fs, nullptr, "sensitivity", 75);
-    trainingSensitivity = cvReadIntByName(fs, nullptr, "trainingSensitivity", 245);
-    learningRate = cvReadIntByName(fs, nullptr, "learningRate", 62);
-    trainingLearningRate = cvReadIntByName(fs, nullptr, "trainingLearningRate", 255);
-    trainingSteps = cvReadIntByName(fs, nullptr, "trainingSteps", 55);
-    showOutput = cvReadIntByName(fs, 0, "showOutput", true);
+    //TODO
+    //test defaults...
+    // CvFileStorage* fs = cvOpenFileStorage(config_xml.c_str(), nullptr, CV_STORAGE_READ);
+
+    fs["sensitivity"]           >> sensitivity;         //def: 75
+    fs["trainingSensitivity"]   >> trainingSensitivity; //def: 245
+    fs["learningRate"]          >> learningRate;        //def: 62
+    fs["trainingLearningRate"]  >> trainingLearningRate;//def: 255
+    fs["trainingSteps"]         >> trainingSteps;       //def: 55
+    fs["showOutput"]            >> showOutput;          //def: true
 
     cvReleaseFileStorage(&fs);
 }
diff --git a/src/algorithms/Tapter.h b/src/algorithms/Tapter.h
index ae4ef5eca2114f95390f6a17c7900d7049a3cece..3e3bfaab9cc92cbbd9cc29b222dd9677f22cb9c5 100644
--- a/src/algorithms/Tapter.h
+++ b/src/algorithms/Tapter.h
@@ -30,8 +30,8 @@ along with BGSLibrary.  If not, see <http://www.gnu.org/licenses/>.
 
 //#define MC_SHOW_STEP_ANALYSE
 
-using namespace lb_library;
-using namespace lb_library::AdaptiveSOM;
+using namespace bgslibrary::algorithms::lb;
+// using namespace bgslibrary::algorithms::lb::AdaptiveSOM;
 using namespace cv;
 using namespace std;
 
@@ -63,7 +63,7 @@ namespace bgslibrary
       void setInitialFrameCounter(int counter);
 
 //      void setPaths(std::string inPath,std::string outPath);
-      void setPathOut(std::string outPath);
+      // void setPathOut(std::string outPath);
 
 //      //! 1 is on
 //      //! other no write
@@ -79,10 +79,10 @@ namespace bgslibrary
       void process(const cv::Mat &img_input, cv::Mat &img_output, cv::Mat &img_bgmodel);
 
     private:
-      void saveConfig();
-      void loadConfig();
-
-
+      void save_config(cv::FileStorage &fs);
+      void load_config(cv::FileStorage &fs);
     };
+
+    bgs_register(Tapter);
   }
 }
diff --git a/src/utils/ILoadSaveConfig.h b/src/utils/ILoadSaveConfig.h
index 2d2261a1c263f3e452700789f4ca5bc55e2ab8e4..33c896b0d80c7594976cfdfcd5997c4b0284e902 100644
--- a/src/utils/ILoadSaveConfig.h
+++ b/src/utils/ILoadSaveConfig.h
@@ -1,4 +1,4 @@
-#pragma once
+  #pragma once
 
 #include <iostream>
 #include <fstream>