diff --git a/GreenScreen/CMakeLists.txt b/GreenScreen/CMakeLists.txt
index 574d9b1..61f9d40 100644
--- a/GreenScreen/CMakeLists.txt
+++ b/GreenScreen/CMakeLists.txt
@@ -6,35 +6,34 @@
 
 project(${ProjectName} VERSION ${Version})
 
-set (DAEMON ./../../daemon)
+set (DAEMON ${PROJECT_SOURCE_DIR}/../../daemon)
 set (PLUGIN_NAME GreenScreen)
 set (JPL_FILE_NAME ${PLUGIN_NAME}.jpl)
 set (DAEMON_SRC ${DAEMON}/src)
 set (CONTRIB_PATH ${DAEMON}/contrib)
-set (DESTINATION_PATH ./../build/)
-set (PLUGINS_LIB ../lib)
+set (PLUGINS_LIB ${PROJECT_SOURCE_DIR}/../lib)
 set (JPL_DIRECTORY ${PROJECT_BINARY_DIR}/jpl)
+set (LIBS_DIR ${PROJECT_SOURCE_DIR}/../contrib/Libs)
 
 if(WIN32)
-	message(OS:\  WINDOWS\ ${CMAKE_SYSTEM_PROCESSOR})
-	if (NOT ${CMAKE_CL_64})
-		message( FATAL_ERROR "\nUse CMake only for x64 Windows" )
-	endif()
-	set (CONTRIB_PLATFORM_CURT x64)
-	set (CONTRIB_PLATFORM ${CONTRIB_PLATFORM_CURT}-windows)
-	set (LIBRARY_FILE_NAME ${PLUGIN_NAME}.dll)
-	set (LIBS_DIR $ENV{HOME}/Documents/GITHUB/Libs)
-	set (OPENCV $ENV{HOME}/Documents/GITHUB/opencv/build-bash/)
-	set (FFMPEG ${CONTRIB_PATH}/build/ffmpeg/Build/win32/x64)
+    message(OS:\  WINDOWS\ ${CMAKE_SYSTEM_PROCESSOR})
+    if (NOT ${CMAKE_CL_64})
+        message( FATAL_ERROR "\nUse CMake only for x64 Windows" )
+    endif()
+    set (CONTRIB_PLATFORM_CURT x64)
+    set (CONTRIB_PLATFORM ${CONTRIB_PLATFORM_CURT}-windows)
+    set (LIBRARY_FILE_NAME ${PLUGIN_NAME}.dll)
+    set (LIBS_BIN_DIR $ENV{PLUGIN_ENV})
+    set (FFMPEG ${CONTRIB_PATH}/build/ffmpeg/Build/win32/x64)
 endif()
 
 if(UNIX)
-	message( FATAL_ERROR "\nUse CMake only for Windows! For linux or Android (linux host), use our bash scripts.\nPlese refer to documentation for more infos." )
-	message(OS:\  LINUX\ ${CMAKE_SYSTEM_PROCESSOR})
-	set (CONTRIB_PLATFORM_CURT ${CMAKE_SYSTEM_PROCESSOR})
-	set (CONTRIB_PLATFORM ${CONTRIB_PLATFORM_CURT}-linux-gnu)
-	set (LIBRARY_FILE_NAME lib${PLUGIN_NAME}.so)
-	set (LIBS_DIR /home/${USER}/Libs)
+    message( FATAL_ERROR "\nUse CMake only for Windows! For linux or Android (linux host), use our bash scripts.\nPlese refer to documentation for more infos." )
+    message(OS:\  LINUX\ ${CMAKE_SYSTEM_PROCESSOR})
+    set (CONTRIB_PLATFORM_CURT ${CMAKE_SYSTEM_PROCESSOR})
+    set (CONTRIB_PLATFORM ${CONTRIB_PLATFORM_CURT}-linux-gnu)
+    set (LIBRARY_FILE_NAME lib${PLUGIN_NAME}.so)
+    set (LIBS_BIN_DIR /home/${USER}/Libs)
 endif()
 
 
@@ -51,19 +50,19 @@
 set(GPU -gpu61)
 
 if (CPU)
-	set(GPU )
-	add_definitions(-DCPU)
-	message(CPU\ BUILDING!)
+    set(GPU )
+    add_definitions(-DCPU)
+    message(CPU\ BUILDING!)
 endif()
 
 if (TFLITE)
-	add_definitions(-DTFLITE)
-	set(TENSORFLOW _tensorflowLite)
-	set(model mobilenet_v2_deeplab_v3_256_myquant.tflite)
-	set(modelType .tflite)
-	set(preferencesFile preferences-tflite.json)
-	set(TFLIB libtensorflowlite)
-	message(TFLITE\ BUILDING!)
+    add_definitions(-DTFLITE)
+    set(TENSORFLOW _tensorflowLite)
+    set(model mobilenet_v2_deeplab_v3_256_myquant.tflite)
+    set(modelType .tflite)
+    set(preferencesFile preferences-tflite.json)
+    set(TFLIB libtensorflowlite)
+    message(TFLITE\ BUILDING!)
 endif()
 
 set(CMAKE_CXX_STANDARD 17)
@@ -72,106 +71,108 @@
 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
 
 set(plugin_SRC main.cpp
-			   pluginInference.cpp
-			   pluginMediaHandler.cpp
-			   pluginParameters.cpp
-			   pluginProcessor.cpp
-			   TFInference.cpp
-			   videoSubscriber.cpp
-			   )
+               pluginInference.cpp
+               pluginMediaHandler.cpp
+               pluginParameters.cpp
+               pluginProcessor.cpp
+               TFInference.cpp
+               videoSubscriber.cpp
+               )
 
 set(plugin_HDR pluginInference.h
-			   pluginMediaHandler.h
-			   pluginParameters.h
-			   pluginProcessor.h
-			   TFInference.h
-			   TFModels.h
-			   videoSubscriber.h
-			   ../lib/accel.h
-			   ../lib/framescaler.h
-			   ../lib/pluglog.h
-			   )
+               pluginMediaHandler.h
+               pluginParameters.h
+               pluginProcessor.h
+               TFInference.h
+               TFModels.h
+               videoSubscriber.h
+               ../lib/accel.h
+               ../lib/framescaler.h
+               ../lib/pluglog.h
+               )
 
 
 
 # add the library
 add_library(${ProjectName} SHARED ${plugin_SRC}
-								  ${plugin_HDR}
-								  )
+                                  ${plugin_HDR}
+                                  )
 
-target_include_directories(${ProjectName} PUBLIC ${PROJECT_BINARY_DIR}
-												 ${PROJECT_SOURCE_DIR}
-												 ${DAEMON_SRC}
-												 ${CONTRIB_PATH}
-												 ${CONTRIB_PATH}/${CONTRIB_PLATFORM}/include
-												 ${CONTRIB_PATH}/${CONTRIB_PLATFORM}/include/opencv4
-												 ${OPENCV}/install/include
-												 ${FFMPEG}/include
-												 ${PLUGINS_LIB}
-												 ${LIBS_DIR}
-												 ${LIBS_DIR}/${TENSORFLOW}/include
-												 ${LIBS_DIR}/${TENSORFLOW}/include/third_party/eigen3
-												 ${LIBS_DIR}/${TENSORFLOW}/include/flatbuffers
-												 )
 if (WIN32)
-target_link_directories(${ProjectName} PUBLIC	${CONTRIB_PATH}
-										${LIBS_DIR}/${TENSORFLOW}/lib/${CONTRIB_PLATFORM}
-										${OPENCV}/install/x64/vc16/staticlib
-										${FFMPEG}/bin
-										${LIBS_DIR}
-										${CONTRIB_PATH}/${CONTRIB_PLATFORM}/lib
-										${CONTRIB_PATH}/${CONTRIB_PLATFORM}/lib/opencv4/3rdparty
-										${LIBS_DIR}/${TENSORFLOW}/lib/${CONTRIB_PLATFORM}
-										)
+target_include_directories(${ProjectName} PUBLIC ${PROJECT_BINARY_DIR}
+                                                 ${PROJECT_SOURCE_DIR}
+                                                 ${PLUGINS_LIB}
+                                                 ${DAEMON_SRC}
+                                                 ${CONTRIB_PATH}
+                                                 ${FFMPEG}/include
+                                                 ${CONTRIB_PATH}/build/opencv/build/install/include
+                                                 ${LIBS_DIR}/${TENSORFLOW}/include
+                                                 ${LIBS_DIR}/${TENSORFLOW}/include/third_party/eigen3
+                                                 ${LIBS_DIR}/${TENSORFLOW}/include/flatbuffers
+                                                 )
+target_link_directories(${ProjectName} PUBLIC ${CONTRIB_PATH}
+                                        ${LIBS_BIN_DIR}/${TENSORFLOW}/lib/${CONTRIB_PLATFORM}
+                                        ${CONTRIB_PATH}/build/opencv/build/lib/Release
+                                        ${CONTRIB_PATH}/build/opencv/build/3rdparty/lib/Release
+                                        ${FFMPEG}/bin
+                                        )
 
 target_link_libraries(${ProjectName} PUBLIC swscale avutil libpng opencv_imgcodecs411 opencv_imgproc411 opencv_core411 ${TFLIB} zlib)
 endif()
 
 if (UNIX)
-link_directories(${ProjectName} PUBLIC	${CONTRIB_PATH}
-										${LIBS_DIR}/${TENSORFLOW}/lib/${CONTRIB_PLATFORM}
-										${OPENCV}/install/x64/vc16/staticlib
-										${FFMPEG}/bin
-										${LIBS_DIR}
-										${CONTRIB_PATH}/${CONTRIB_PLATFORM}/lib
-										${CONTRIB_PATH}/${CONTRIB_PLATFORM}/lib/opencv4/3rdparty
-										${LIBS_DIR}/${TENSORFLOW}/lib/${CONTRIB_PLATFORM}
-										)
+target_include_directories(${ProjectName} PUBLIC ${PROJECT_BINARY_DIR}
+                                                 ${PROJECT_SOURCE_DIR}
+                                                 ${PLUGINS_LIB}
+                                                 ${DAEMON_SRC}
+                                                 ${CONTRIB_PATH}/${CONTRIB_PLATFORM}/include
+                                                 ${CONTRIB_PATH}/${CONTRIB_PLATFORM}/include/opencv4
+                                                 ${LIBS_DIR}/${TENSORFLOW}/include
+                                                 ${LIBS_DIR}/${TENSORFLOW}/include/third_party/eigen3
+                                                 ${LIBS_DIR}/${TENSORFLOW}/include/flatbuffers
+                                                 )
+link_directories(${ProjectName} PUBLIC    ${CONTRIB_PATH}
+                                        ${LIBS_BIN_DIR}/${TENSORFLOW}/lib/${CONTRIB_PLATFORM}
+                                        ${CONTRIB_PATH}/${CONTRIB_PLATFORM}/lib
+                                        ${CONTRIB_PATH}/${CONTRIB_PLATFORM}/lib/opencv4/3rdparty
+                                        )
 target_link_libraries(${ProjectName} PUBLIC swscale avutil libpng opencv_imgcodecs opencv_imgproc opencv_core ${TFLIB})
 endif()
 
 add_custom_command(
-	TARGET ${ProjectName}
-	PRE_BUILD
-	COMMAND ${CMAKE_COMMAND} -E remove_directory -r ${JPL_DIRECTORY}
-	COMMAND ${CMAKE_COMMAND} -E remove_directory -r ${JPL_DIRECTORY}/../../../build/${ProjectName}
-	COMMAND ${CMAKE_COMMAND} -E make_directory ${JPL_DIRECTORY}/../../../build/${ProjectName}
-	COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/data ${JPL_DIRECTORY}/data
-	COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBS_DIR}/${TENSORFLOW}/lib/ ${JPL_DIRECTORY}/lib
-	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/modelsSRC/${model} ${JPL_DIRECTORY}/data/models
-	COMMAND ${CMAKE_COMMAND} -E rename ${JPL_DIRECTORY}/data/models/${model} ${JPL_DIRECTORY}/data/models/mModel${modelType}
-	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/manifest.json ${JPL_DIRECTORY}
-	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/${preferencesFile} ${JPL_DIRECTORY}/data
-	COMMAND ${CMAKE_COMMAND} -E rename ${JPL_DIRECTORY}/data/${preferencesFile} ${JPL_DIRECTORY}/data/preferences.json
-	COMMENT "Assembling Plugin files"
+    TARGET ${ProjectName}
+    PRE_BUILD
+    COMMAND ${CMAKE_COMMAND} -E remove_directory -r ${JPL_DIRECTORY}
+    COMMAND ${CMAKE_COMMAND} -E remove_directory -r ${JPL_DIRECTORY}/../../../build/${ProjectName}
+    COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/data ${JPL_DIRECTORY}/data
+    COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBS_BIN_DIR}/${TENSORFLOW}/lib/ ${JPL_DIRECTORY}/lib
+    COMMAND ${CMAKE_COMMAND} -E make_directory ${JPL_DIRECTORY}/data/models
+    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/modelsSRC/${model} ${JPL_DIRECTORY}/data/models
+    COMMAND ${CMAKE_COMMAND} -E rename ${JPL_DIRECTORY}/data/models/${model} ${JPL_DIRECTORY}/data/models/mModel${modelType}
+    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/manifest.json ${JPL_DIRECTORY}
+    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/${preferencesFile} ${JPL_DIRECTORY}/data
+    COMMAND ${CMAKE_COMMAND} -E rename ${JPL_DIRECTORY}/data/${preferencesFile} ${JPL_DIRECTORY}/data/preferences.json
+    COMMENT "Assembling Plugin files"
 )
 
 if (WIN32)
-	add_custom_command(
-		TARGET ${ProjectName}
-		POST_BUILD
-		COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${ProjectName}.lib ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
-		COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${LIBRARY_FILE_NAME} ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
-		COMMAND python ${PROJECT_SOURCE_DIR}/../assemblePlugin.py --plugins=GreenScreen
-		COMMENT "Generating JPL archive"
-	)
+    add_custom_command(
+        TARGET ${ProjectName}
+        POST_BUILD
+        COMMAND ${CMAKE_COMMAND} -E make_directory ${JPL_DIRECTORY}/../../../build/x64-windows/${TENSORFLOW}
+        COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${ProjectName}.lib ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
+        COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${LIBRARY_FILE_NAME} ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
+        COMMAND python ${PROJECT_SOURCE_DIR}/../assemble-plugin.py --plugins=GreenScreen --extraPath=${TENSORFLOW}
+        COMMENT "Generating JPL archive"
+    )
 else()
-	add_custom_command(
-		TARGET ${ProjectName}
-		POST_BUILD
-		COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${LIBRARY_FILE_NAME} ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
-		COMMAND python ${PROJECT_SOURCE_DIR}/../assemblePlugin.py --plugins=GreenScreen
-		COMMENT "Generating JPL archive"
-	)
+    add_custom_command(
+        TARGET ${ProjectName}
+        POST_BUILD
+        COMMAND ${CMAKE_COMMAND} -E make_directory ${JPL_DIRECTORY}/../../../build/x86_64-linux-gnu/${TENSORFLOW}
+        COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${LIBRARY_FILE_NAME} ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
+        COMMAND python ${PROJECT_SOURCE_DIR}/../assemble-plugin.py --plugins=GreenScreen --extraPath=${TENSORFLOW}
+        COMMENT "Generating JPL archive"
+    )
 
 endif()
\ No newline at end of file
