diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6fcb0358aea9c3819ca04d91691fa71b871593ca..7cb823f70369639b9405a8d4e74608116ad4339a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,10 +4,14 @@
 # -DCMAKE_VERBOSE_MAKEFILE=ON (default OFF)
 # -DBUILD_TESTING=ON (default OFF)
 
-cmake_minimum_required(VERSION 2.8)
+cmake_minimum_required(VERSION 3.1)
+set(CMAKE_LEGACY_CYGWIN_WIN32 0)
 
 project(JPSreport)
 
+IF (POLICY CMP0054)
+cmake_policy(SET CMP0054 NEW)
+ENDIF (POLICY CMP0054)
 set(CMAKE_COLOR_MAKEFILE ON)
 
 set(LIBRARY_OUTPUT_PATH  ${CMAKE_SOURCE_DIR}/lib/${CMAKE_BUILD_TYPE})
@@ -247,34 +251,70 @@ if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_BUILD_TYPE MATCHES Debug)
   message(STATUS "Debug flags for coverage: " ${CMAKE_CXX_FLAGS_DEBUG} )
 endif(CMAKE_COMPILER_IS_GNUCXX  AND CMAKE_BUILD_TYPE MATCHES Debug)
 
-
+if (Boost_NO_SYSTEM_PATHS)
+	set(Boost_NO_SYSTEM_PATHS ON)
+	set(BOOST_INCLUDE_DIRS "${BOOST_ROOT}/include")
+	set(BOOST_LIBRARY_DIRS "${BOOST_ROOT}/stage/lib")
+	set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} ${BOOST_ROOT})
+	set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${BOOST_LIBRARY_DIRS})
+endif (Boost_NO_SYSTEM_PATHS)
 
 #find_package(Boost COMPONENTS system filesystem REQUIRED)
-find_package(Boost  REQUIRED)
-message( STATUS "Boost_INCLUDE_DIR: " ${Boost_INCLUDE_DIR} )
-message( STATUS "Boost_LIBRARY_DIR: " ${Boost_LIBRARY_DIR} )
-
-include_directories(${Boost_INCLUDE_DIR})
-#link_directories(${Boost_LIBRARY_DIR})
-
-if (WIN32)
-find_library (PSAPI Psapi PATH_SUFFIXES "x64")
-message (STATUS "PSAPI: ${PSAPI}")
+find_package(Boost REQUIRED)
+if (Boost_FOUND)
+	set(Boost_USE_STATIC_LIBS ON)
+	set(Boost_USE_STATIC_RUNTIME ON) 
+
+	if(WIN32)
+		add_definitions(${Boost_LIB_DIAGNOSTIC_DEFINITIONS})
+	endif()
+	message(STATUS "BOOST FOUND: " ${Boost_LIB_VERSION})
+	message(STATUS "Boost_LIBRARY_DIRS: " ${Boost_LIBRARY_DIRS})
+	message(STATUS "Boost_INCLUDE_DIR: " ${Boost_INCLUDE_DIR})
+	message(STATUS "Boost_LIB_VERSION: " ${Boost_LIB_VERSION})
+	message(STATUS "Boost_libraries: " ${Boost_LIBRARIES})
+	link_directories(${Boost_LIBRARY_DIRS})
+	include_directories(${Boost_INCLUDE_DIR})
+	# suppress warnings in boost libraries with attribute SYSTEM
+	#include_directories(SYSTEM ${Boost_INCLUDE_DIR})
+	else()
+    message(WARNING "BOOST NOT FOUND")
 endif()
 
+#if (WIN32)
+#find_library (PSAPI Psapi PATH_SUFFIXES "x64")
+#message (STATUS "PSAPI: ${PSAPI}")
+#endif()
+
 add_library ( geometrycore STATIC ${source_files} )
 add_executable(
         jpsreport main.cpp
 )
-
-
+if (Boost_FOUND)
+target_link_libraries(geometrycore ${Boost_LIBRARIES})
+endif()
 if(WIN32)
 target_link_libraries (jpsreport wsock32)
-target_link_libraries( jpsreport ${PSAPI} )
+#target_link_libraries( jpsreport ${PSAPI} )
 endif()
 
 target_link_libraries( jpsreport geometrycore )
+if(CMAKE_VERSION GREATER_EQUAL "3.6") 
+	if(WIN32)
+		if(MSVC)
+			set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT jpsreport)
+			message(STATUS "set start project for VS")
+		endif()
+	endif()
+endif()
 
+if(CMAKE_VERSION GREATER_EQUAL "3.6") 
+	if(WIN32)
+		if(MSVC)
+			set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT jpsreport)
+		endif()
+	endif()
+endif()
 # ----------------------------- cTest ------------------------------------------
 if(BUILD_TESTING)
   SET(BUILD_TEST_TIMEOUT 10800   CACHE STRING "Global timeout on all tests (seconds).")
@@ -314,3 +354,88 @@ if(BUILD_TESTING)
     message(STATUS "Found Python: " ${PYTHON_EXECUTABLE})
   endif(PYTHONINTERP_FOUND)
 endif(BUILD_TESTING)
+
+# ----------- CPACK
+set(DEMOS_DIR "demos")
+set(DEMO1_DIR "${DEMOS_DIR}/T-Junction")
+set(DEMO2_DIR "${DEMOS_DIR}/bottleneck")
+set(SCRIPTS_DIR "scripts")
+set(NOTEBOOK "${CMAKE_SOURCE_DIR}/${DEMOS_DIR}/HowTo.ipynb")
+
+file(GLOB CT_FILES "${CMAKE_SOURCE_DIR}/${DEMO1_DIR}/*")
+file(GLOB CT_FILES2 "${CMAKE_SOURCE_DIR}/${DEMO2_DIR}/*")
+file(GLOB SCRIPT_FILES "${CMAKE_SOURCE_DIR}/${SCRIPTS_DIR}/*")
+
+install(TARGETS jpsreport 
+	DESTINATION bin 
+	COMPONENT applications)
+
+install(DIRECTORY DESTINATION ${DEMO1_DIR})
+install(DIRECTORY DESTINATION ${DEMO2_DIR})
+
+# notebook 
+install(FILES ${NOTEBOOK}
+        DESTINATION ${DEMOS_DIR}
+        COMPONENT demos)
+	
+install(FILES ${CT_FILES}
+        DESTINATION ${DEMO1_DIR}
+        COMPONENT demos)
+
+install(FILES ${CT_FILES2}
+        DESTINATION ${DEMO2_DIR}
+        COMPONENT demos)
+		
+install(FILES ${SCRIPT_FILES}
+	DESTINATION ${SCRIPTS_DIR}
+    COMPONENT scripts)	
+	
+	
+if(WIN32 AND NOT UNIX)
+	message(STATUS "Package generation - Windows")
+	set(CPACK_GENERATOR "NSIS")
+	find_program(NSIS_PATH nsis PATH_SUFFIXES nsis)
+	if(NSIS_PATH)
+        set(CPACK_GENERATOR "${CPACK_GENERATOR};NSIS")
+        message(STATUS "   + NSIS                                 YES ")
+	else(NSIS_PATH)
+        message(STATUS "   + NSIS                                 NO ")
+	endif(NSIS_PATH)
+
+#CPACK_NSIS_URL_INFO_ABOUT
+	set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
+	include(InstallRequiredSystemLibraries)
+	#message(STATUS "System Dependencies: " ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS})
+	install(PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS}
+        DESTINATION sys
+        COMPONENT applications)
+		
+elseif(APPLE)
+set(DEFAULT_CPACK_GENERATOR "DragNDrop")
+endif()
+set(CPACK_COMPONENTS_ALL applications)
+set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE")
+set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/LICENSE")
+set(CPACK_NSIS_MUI_ICON "${CMAKE_SOURCE_DIR}/forms/jpsreport.ico")
+set(CPACK_NSIS_MUI_UNIICON "${CMAKE_SOURCE_DIR}/forms/jpsreport.ico")
+set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
+set(CPACK_NSIS_MODIFY_PATH ON)
+set(CPACK_COMPONENTS_ALL applications demos scripts)
+#set(CPACK_COMPONENT_CTDATA_GROUP "Demos")
+set(CPACK_COMPONENT_APPLICATIONS_DISPLAY_NAME "jpsreport")
+set(CPACK_COMPONENT_GROUP_DATA_DESCRIPTION "demo files" "Scripts")
+set(CPACK_COMPONENT_DATA_FILES_DESCRIPTION "demo files to get started" "scripts")
+	
+SET(CPACK_PACKAGE_DESCRIPTION "Simulation core of JuPedSim")
+SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "The simulation core of JuPedSim, a framework for simulation and analysis of pedestrian dynamics")
+SET(CPACK_PACKAGE_VENDOR "Forschungszentrum Juelich GmbH")
+SET(CPACK_PACKAGE_NAME "JPSreport")
+SET(CPACK_PACKAGE_CONTACT "m.chraibi@fz-juelich.de")
+SET(CPACK_PACKAGE_VERSION_MAJOR "${JPSREPORT_MAJOR_VERSION}")
+SET(CPACK_PACKAGE_VERSION_MINOR "${JPSREPORT_MINOR_VERSION}")
+SET(CPACK_PACKAGE_VERSION_PATCH "${JPSREPORT_PATCH_VERSION}")
+SET(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${JPSREPORT_VERSION}")
+SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${JPSREPORT_VERSION}")
+
+INCLUDE(CPack)
+
diff --git a/forms/JPSreport.ico b/forms/JPSreport.ico
new file mode 100644
index 0000000000000000000000000000000000000000..77329adb30d0850918c81a53e54d0a668a0e8426
Binary files /dev/null and b/forms/JPSreport.ico differ
diff --git a/forms/jpsreport.rc b/forms/jpsreport.rc
new file mode 100644
index 0000000000000000000000000000000000000000..28dceab002a86dfbae7f87783b75115be068df71
--- /dev/null
+++ b/forms/jpsreport.rc
@@ -0,0 +1 @@
+IDI_ICON1               ICON    DISCARDABLE     "jpsreport.ico"
diff --git a/forms/jupedsim.png b/forms/jupedsim.png
new file mode 100644
index 0000000000000000000000000000000000000000..85b31abbcafae620b5d23df116ae8618efe8c08f
Binary files /dev/null and b/forms/jupedsim.png differ