diff --git a/CMakeLists.txt b/CMakeLists.txt
index ee0576aed443b03724c4bd223bf800ae59b58b91..190edaec606ed889adba4d24bbe2ab4b2c69f2a0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -25,72 +25,72 @@ set(JPSCORE_MAJOR_VERSION 0)
 set(JPSCORE_MINOR_VERSION 8)
 set(JPSCORE_PATCH_VERSION 3)
 set(JPSCORE_VERSION
-        ${JPSCORE_MAJOR_VERSION}.${JPSCORE_MINOR_VERSION}.${JPSCORE_PATCH_VERSION})
+${JPSCORE_MAJOR_VERSION}.${JPSCORE_MINOR_VERSION}.${JPSCORE_PATCH_VERSION})
 message(STATUS "JPSCORE_VERSION: " ${JPSCORE_VERSION})
-
+add_definitions("-DJPSCORE_VERSION=\"${JPSCORE_VERSION}\"")
 if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR
-        "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
-    set(warnings "-Wall -Wextra")
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
-  elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
-    set(warnings "/W4 /WX /EHsc")
-  elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
-      message(STATUS "Compiling with Intel settings")
-   set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -w")
-  set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0 -w -tcheck")
+"${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+set(warnings "-Wall -Wextra")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
+set(warnings "/W4 /WX /EHsc")
+elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
+message(STATUS "Compiling with Intel settings")
+set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -w")
+set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0 -w -tcheck")
 elseif ()
 endif ()
 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${warnings}")
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${warnings}")
 
 if (NOT BUILD_TESTING)
-    set(BUILD_TESTING OFF) # test units & python tests are not generated.
+set(BUILD_TESTING OFF) # test units & python tests are not generated.
 endif (NOT BUILD_TESTING)
 message(STATUS "BUILD_TESTING: " ${BUILD_TESTING})
 
 if (NOT BUILD_CPPUNIT_TEST)
-    set(BUILD_CPPUNIT_TEST OFF)
+set(BUILD_CPPUNIT_TEST OFF)
 endif (NOT BUILD_CPPUNIT_TEST)
 message(STATUS "BUILD_CPPUNIT_TEST: " ${BUILD_CPPUNIT_TEST})
 
 if (NOT CMAKE_EXPORT_COMPILE_COMMANDS)
-    # To generate a compilation database "compilation_commands.json" for clang_check
-    set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+# To generate a compilation database "compilation_commands.json" for clang_check
+set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
 endif (NOT CMAKE_EXPORT_COMPILE_COMMANDS)
 
 # Get number of processors. Mac is not supported
 if (NOT DEFINED PROCESSOR_COUNT)
-    # Unknown:
-    set(PROCESSOR_COUNT 0)
-
-    # Linux:
-    set(cpuinfo_file "/proc/cpuinfo")
-    if (EXISTS "${cpuinfo_file}")
-        file(STRINGS "${cpuinfo_file}" procs REGEX "^processor.: [0-9]+$")
-        list(LENGTH procs PROCESSOR_COUNT)
-    endif (EXISTS "${cpuinfo_file}")
-
-    # Windows:
-    if (WIN32)
-        set(PROCESSOR_COUNT "$ENV{NUMBER_OF_PROCESSORS}")
-    endif (WIN32)
+# Unknown:
+set(PROCESSOR_COUNT 0)
+
+# Linux:
+set(cpuinfo_file "/proc/cpuinfo")
+if (EXISTS "${cpuinfo_file}")
+file(STRINGS "${cpuinfo_file}" procs REGEX "^processor.: [0-9]+$")
+list(LENGTH procs PROCESSOR_COUNT)
+endif (EXISTS "${cpuinfo_file}")
+
+# Windows:
+if (WIN32)
+set(PROCESSOR_COUNT "$ENV{NUMBER_OF_PROCESSORS}")
+endif (WIN32)
 endif (NOT DEFINED PROCESSOR_COUNT)
 
 if (PROCESSOR_COUNT)
-     message( STATUS "PROCESSOR_COUNT: " ${PROCESSOR_COUNT})
-    #  set(CTEST_BUILD_FLAGS "-j${PROCESSOR_COUNT}")
-    message(STATUS "PROCESSOR_COUNT: 1")
+message( STATUS "PROCESSOR_COUNT: " ${PROCESSOR_COUNT})
+#  set(CTEST_BUILD_FLAGS "-j${PROCESSOR_COUNT}")
+message(STATUS "PROCESSOR_COUNT: 1")
 
-    set(CTEST_BUILD_FLAGS "-j0")
+set(CTEST_BUILD_FLAGS "-j0")
 endif (PROCESSOR_COUNT)
 
 if (NOT CMAKE_BUILD_TYPE)
-    #  set (CMAKE_BUILD_TYPE Release)
-    set(CMAKE_BUILD_TYPE Debug)
+#  set (CMAKE_BUILD_TYPE Release)
+set(CMAKE_BUILD_TYPE Debug)
 endif (NOT CMAKE_BUILD_TYPE)
 message(STATUS "CMAKE_BUILD_TYPE: " ${CMAKE_BUILD_TYPE})
 if(NOT USE_DUAL_ABI)
-  set (USE_DUAL_ABI FALSE)
+set (USE_DUAL_ABI FALSE)
 endif()
 #------------------ set important directories --------------------
 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
@@ -106,19 +106,20 @@ message(STATUS "")
 message(STATUS "Platform: ")
 message(STATUS "    Host: " ${CMAKE_HOST_SYSTEM_NAME} ${CMAKE_HOST_SYSTEM_VERSION} ${CMAKE_HOST_SYSTEM_PROCESSOR})
 if (CMAKE_CROSSCOMPILING)
-    message(STATUS "    Target: " ${CMAKE_SYSTEM_NAME} ${CMAKE_SYSTEM_VERSION} ${CMAKE_SYSTEM_PROCESSOR})
+message(STATUS "    Target: " ${CMAKE_SYSTEM_NAME} ${CMAKE_SYSTEM_VERSION} ${CMAKE_SYSTEM_PROCESSOR})
 endif ()
 message(STATUS "    CMake: " ${CMAKE_VERSION})
 message(STATUS "    CMake generator: " ${CMAKE_GENERATOR})
 message(STATUS "    CMake build tool: " ${CMAKE_BUILD_TOOL})
 if (MSVC)
-    message(STATUS "    MSVC: " ${MSVC_VERSION})
+message(STATUS "    MSVC: " ${MSVC_VERSION})
+#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ZLIB_WINAPI)
 endif ()
 if (CMAKE_GENERATOR MATCHES Xcode)
-    message(STATUS "    Xcode: " ${XCODE_VERSION})
+message(STATUS "    Xcode: " ${XCODE_VERSION})
 endif ()
 if (NOT CMAKE_GENERATOR MATCHES "Xcode|Visual Studio")
-    message(STATUS "    Configuration: " ${CMAKE_BUILD_TYPE})
+message(STATUS "    Configuration: " ${CMAKE_BUILD_TYPE})
 endif ()
 message(STATUS "")
 
@@ -127,42 +128,88 @@ message(STATUS "")
 # message( STATUS "EXECUTABLE_OUTPUT_PATH: " ${EXECUTABLE_OUTPUT_PATH} )
 # message( STATUS "CMAKE_VERBOSE_MAKEFILE: " ${CMAKE_VERBOSE_MAKEFILE} )
 
+find_package(Git REQUIRED) # no need for this msg. It comes from cmake.findgit()
+find_program(GIT_SCM git DOC "Git version control")
+mark_as_advanced(GIT_SCM)
+find_file(GITDIR NAMES .git PATHS ${CMAKE_SOURCE_DIR} NO_DEFAULT_PATH)
+if (GIT_SCM AND GITDIR)
+# the commit's SHA1, and whether the building workspace was dirty or not
+# describe --match=NeVeRmAtCh --always --tags --abbrev=40 --dirty
+execute_process(COMMAND
+"${GIT_EXECUTABLE}" --no-pager describe --tags --always --dirty
+WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
+OUTPUT_VARIABLE GIT_SHA1
+ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+# branch
+execute_process(
+COMMAND "${GIT_EXECUTABLE}" rev-parse --abbrev-ref HEAD
+WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
+OUTPUT_VARIABLE GIT_BRANCH
+OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+
+# the date of the commit
+execute_process(COMMAND
+"${GIT_EXECUTABLE}" log -1 --format=%ad --date=local
+WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
+OUTPUT_VARIABLE GIT_DATE
+ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+# the subject of the commit
+execute_process(COMMAND
+"${GIT_EXECUTABLE}" log -1 --format=%s
+WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
+OUTPUT_VARIABLE GIT_COMMIT_SUBJECT
+ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+
+
+add_definitions("-DGIT_COMMIT_HASH=\"${GIT_SHA1}\"")
+add_definitions("-DGIT_COMMIT_DATE=\"${GIT_DATE}\"")
+add_definitions("-DGIT_COMMIT_SUBJECT=\"${GIT_COMMIT_SUBJECT}\"")
+add_definitions("-DGIT_BRANCH=\"${GIT_BRANCH}\"")
+else()
+message(STATUS "Not in a git repo")
+endif()
+
+
 # add a target to generate API documentation with Doxygen
 find_package(Doxygen)
 if (DOXYGEN_FOUND)
-    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
-    add_custom_target(doc
-            ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
-            WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
-            COMMENT "Generating API documentation with Doxygen" VERBATIM
-            )
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
+add_custom_target(doc
+${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
+WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+COMMENT "Generating API documentation with Doxygen" VERBATIM
+)
 endif (DOXYGEN_FOUND)
 #http://stackoverflow.com/questions/1487752/how-do-i-instruct-cmake-to-look-for-libraries-installed-by-macports
 if (APPLE)
-    # Detect if the "port" command is valid on this system; if so, return full path
-    execute_process(COMMAND which port RESULT_VARIABLE DETECT_MACPORTS OUTPUT_VARIABLE MACPORTS_PREFIX ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
-    if (${DETECT_MACPORTS} EQUAL 0)
-        # "/opt/local/bin/port" doesn't have libs, so we get the parent directory
-        get_filename_component(MACPORTS_PREFIX ${MACPORTS_PREFIX} DIRECTORY)
-        # "/opt/local/bin" doesn't have libs, so we get the parent directory
-        get_filename_component(MACPORTS_PREFIX ${MACPORTS_PREFIX} DIRECTORY)
-        # "/opt/local" is where MacPorts lives, add `/lib` suffix and link
-        link_directories(${MACPORTS_PREFIX}/lib)
-        message(STATUS "Macports detected: ${MACPORTS_PREFIX}/lib")
-        # SET(CMAKE_SYSTEM_NAME Darwin)
-        # # Add MacPorts
-        # INCLUDE_DIRECTORIES(/opt/local/include)
-
-        # LINK_DIRECTORIES(/opt/local/lib)
-
-    else ()
-        # Recommendation, also add a "brew --prefix" custom command to detect a homebrew build environment
-        execute_process(COMMAND brew --prefix RESULT_VARIABLE DETECT_BREW OUTPUT_VARIABLE BREW_PREFIX ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
-        if (${DETECT_BREW} EQUAL 0)
-            link_directories(${BREW_PREFIX}/lib)
-            message(STATUS "Brew detected: ${BREW_PREFIX}")
-        endif ()
-    endif ()
+# Detect if the "port" command is valid on this system; if so, return full path
+execute_process(COMMAND which port RESULT_VARIABLE DETECT_MACPORTS OUTPUT_VARIABLE MACPORTS_PREFIX ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
+if (${DETECT_MACPORTS} EQUAL 0)
+# "/opt/local/bin/port" doesn't have libs, so we get the parent directory
+get_filename_component(MACPORTS_PREFIX ${MACPORTS_PREFIX} DIRECTORY)
+# "/opt/local/bin" doesn't have libs, so we get the parent directory
+get_filename_component(MACPORTS_PREFIX ${MACPORTS_PREFIX} DIRECTORY)
+# "/opt/local" is where MacPorts lives, add `/lib` suffix and link
+link_directories(${MACPORTS_PREFIX}/lib)
+message(STATUS "Macports detected: ${MACPORTS_PREFIX}/lib")
+# SET(CMAKE_SYSTEM_NAME Darwin)
+# # Add MacPorts
+# INCLUDE_DIRECTORIES(/opt/local/include)
+
+# LINK_DIRECTORIES(/opt/local/lib)
+
+else ()
+# Recommendation, also add a "brew --prefix" custom command to detect a homebrew build environment
+execute_process(COMMAND brew --prefix RESULT_VARIABLE DETECT_BREW OUTPUT_VARIABLE BREW_PREFIX ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
+if (${DETECT_BREW} EQUAL 0)
+link_directories(${BREW_PREFIX}/lib)
+message(STATUS "Brew detected: ${BREW_PREFIX}")
+endif ()
+endif ()
 
 
 endif (APPLE)
@@ -170,11 +217,11 @@ endif (APPLE)
 
 
 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})
+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)
 # in case boost is a non-default location
 # SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "C:/win32libs/boost")
@@ -185,16 +232,16 @@ endif (Boost_NO_SYSTEM_PATHS)
 # find the correct OpenMP flag
 FIND_PACKAGE(OpenMP)
 if (OPENMP_FOUND)
-    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
-    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
 else (OPENMP_FOUND)
-    if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
-        #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
-        # somehow find_package(openmp) does not work properly with clang
-    else (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
-        message(STATUS "Disabling OpenMP support")
-    endif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
+# somehow find_package(openmp) does not work properly with clang
+else (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+message(STATUS "Disabling OpenMP support")
+endif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
 endif (OPENMP_FOUND)
 
 #statically link all gcc stuffs
@@ -212,323 +259,323 @@ endif()
 # test all cpp-files in Utest
 if (BUILD_TESTING OR BUILD_CPPUNIT_TEST)
 
-    find_package(Boost COMPONENTS timer chrono system filesystem unit_test_framework REQUIRED)
-    IF (CMAKE_COMPILER_IS_GNUCXX)
-      set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage")
-      IF (USE_DUAL_ABI)
-        set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_GLIBCXX_USE_CXX11_ABI=0")
-      ENDIF(USE_DUAL_ABI)
-        set(CMAKE_EXE_LINKER_FLAGS "-fprofile-arcs -ftest-coverage")
-        set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake_modules/")
-        INCLUDE(CodeCoverage)
-        set(ENABLE_COVERAGE ON)
-        SETUP_TARGET_FOR_COVERAGE(
-                cov  # Name for custom target.
-                ctest         # Name of the test driver executable that runs the tests.
-                # NOTE! This should always have a ZERO as exit code
-                # otherwise the coverage generation will not complete.
-                coverage            # Name of output directory.
-        )
-
-    endif (CMAKE_COMPILER_IS_GNUCXX)
-    file(GLOB_RECURSE test_files "${CMAKE_TEST_DIR}/*.cpp")
-    #  file(GLOB test_py_files "${CMAKE_TEST_DIR}/*/runtest*.py")
+find_package(Boost COMPONENTS timer chrono system filesystem unit_test_framework REQUIRED)
+IF (CMAKE_COMPILER_IS_GNUCXX)
+set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage")
+IF (USE_DUAL_ABI)
+set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_GLIBCXX_USE_CXX11_ABI=0")
+ENDIF(USE_DUAL_ABI)
+set(CMAKE_EXE_LINKER_FLAGS "-fprofile-arcs -ftest-coverage")
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake_modules/")
+INCLUDE(CodeCoverage)
+set(ENABLE_COVERAGE ON)
+SETUP_TARGET_FOR_COVERAGE(
+cov  # Name for custom target.
+ctest         # Name of the test driver executable that runs the tests.
+# NOTE! This should always have a ZERO as exit code
+# otherwise the coverage generation will not complete.
+coverage            # Name of output directory.
+)
+
+endif (CMAKE_COMPILER_IS_GNUCXX)
+file(GLOB_RECURSE test_files "${CMAKE_TEST_DIR}/*.cpp")
+#  file(GLOB test_py_files "${CMAKE_TEST_DIR}/*/runtest*.py")
 endif (BUILD_TESTING OR BUILD_CPPUNIT_TEST)
 
 if (BUILD_TESTING)
-    file(GLOB_RECURSE test_py_files "${CMAKE_TEST_DIR}/*runtest_*.py")
+file(GLOB_RECURSE test_py_files "${CMAKE_TEST_DIR}/*runtest_*.py")
 endif (BUILD_TESTING)
 
 # add sources and headers
 set(source_files
-        Simulation.cpp
-        general/ArgumentParser.cpp
-        IO/progress_bar.cpp
-        tinyxml/tinystr.cpp
-        tinyxml/tinyxml.cpp
-        tinyxml/tinyxmlerror.cpp
-        tinyxml/tinyxmlparser.cpp
-
-        geometry/Building.cpp
-        geometry/Line.cpp
-        geometry/Point.cpp
-        geometry/Transition.cpp
-        geometry/Hline.cpp
-        geometry/Obstacle.cpp
-        geometry/SubRoom.cpp
-        geometry/Crossing.cpp
-        geometry/NavLine.cpp
-        geometry/Room.cpp
-        geometry/Wall.cpp
-        geometry/Goal.cpp
-
-        IO/GeoFileParser.cpp
-        IO/IniFileParser.cpp
-        IO/IODispatcher.cpp
-        IO/OutputHandler.cpp
-        IO/PedDistributionParser.cpp
-        IO/TraVisToClient.cpp
-
-        math/ForceModel.cpp
-        math/Mathematics.cpp
-        math/ODESolver.cpp
-        math/GCFMModel.cpp
-        math/GompertzModel.cpp
-        math/GradientModel.cpp
-        math/VelocityModel.cpp
-        math/OperationalModel.cpp
-
-
-        mpi/LCGrid.cpp
-
-        pedestrian/Ellipse.cpp
-        pedestrian/PedDistributor.cpp
-        pedestrian/Pedestrian.cpp
-        pedestrian/AgentsParameters.cpp
-        pedestrian/Knowledge.cpp
-        pedestrian/AgentsQueue.cpp
-        pedestrian/AgentsSource.cpp
-        pedestrian/Pedestrian.cpp
-        pedestrian/AgentsSourcesManager.cpp
-        pedestrian/StartDistribution.cpp
-
-
-        #voronoi/VoronoiDiagramGenerator.cpp
-        voronoi-boost/VoronoiPositionGenerator.cpp
-
-        #floorfield
-        routing/ff_router/ffRouter.cpp
-        #routing/ff_router/LocalFloorfieldViaFM.cpp
-        routing/ff_router/FloorfieldViaFM.cpp
-        #routing/ff_router/FFKit.cpp
-        routing/ff_router/UnivFFviaFM.cpp
-
-        #global_shortest
-        routing/global_shortest/AccessPoint.cpp
-        routing/global_shortest/GlobalRouter.cpp
-        routing/global_shortest/DTriangulation.cpp
-
-        #general
-        routing/DirectionStrategy.cpp
-        routing/Router.cpp
-        routing/RoutingEngine.cpp
-
-
-        #quickest
-        routing/quickest/QuickestPathRouter.cpp
-
-        #Smoke router
-        routing/smoke_router/SmokeRouter.cpp
-        routing/smoke_router/GraphNetwork.cpp
-        routing/smoke_router/NavigationGraph.cpp
-        routing/smoke_router/BrainStorage.cpp
-        routing/smoke_router/navigation_graph/GraphEdge.cpp
-        routing/smoke_router/navigation_graph/GraphVertex.cpp
-        routing/smoke_router/sensor/RoomToFloorSensor.cpp
-        routing/smoke_router/sensor/SensorManager.cpp
-        routing/smoke_router/sensor/AbstractSensor.cpp
-        routing/smoke_router/sensor/DiscoverDoorsSensor.cpp
-        routing/smoke_router/sensor/JamSensor.cpp
-        routing/smoke_router/sensor/LastDestinationsSensor.cpp
-        routing/smoke_router/sensor/locater.cpp
-        routing/smoke_router/cognitiveMap/associations.cpp
-        routing/smoke_router/cognitiveMap/connection.cpp
-        routing/smoke_router/cognitiveMap/cognitivemap.cpp
-        routing/smoke_router/cognitiveMap/landmark.cpp
-        routing/smoke_router/cognitiveMap/region.cpp
-        routing/smoke_router/cognitiveMap/youareherepointer.cpp
-        routing/smoke_router/cognitiveMap/cogmapoutputhandler.cpp
-        routing/smoke_router/cognitiveMap/landmarknetwork.cpp
-        routing/smoke_router/Brain.cpp
-        routing/smoke_router/cognitiveMap/internnavigationnetwork.cpp
-        visiLibity/source_code/visilibity.cpp
-
-        poly2tri/common/shapes.cpp
-        poly2tri/sweep/sweep_context.cpp
-        poly2tri/sweep/advancing_front.cpp
-        poly2tri/sweep/sweep.cpp
-        poly2tri/sweep/cdt.cpp
-        events/EventManager.cpp
-        events/Event.cpp
-
-        JPSfire/generic/FDSMesh.cpp
-        JPSfire/generic/Knot.cpp
-        JPSfire/generic/FDSMeshStorage.cpp
-        JPSfire/A_smoke_sensor/SmokeSensor.cpp
-        JPSfire/B_walking_speed/WalkingSpeed.cpp
-        JPSfire/C_toxicity_analysis/ToxicityAnalysis.cpp
-        JPSfire/C_toxicity_analysis/ToxicityOutputhandler.cpp
-
-        math/KrauszModel.cpp)
+Simulation.cpp
+general/ArgumentParser.cpp
+IO/progress_bar.cpp
+tinyxml/tinystr.cpp
+tinyxml/tinyxml.cpp
+tinyxml/tinyxmlerror.cpp
+tinyxml/tinyxmlparser.cpp
+
+geometry/Building.cpp
+geometry/Line.cpp
+geometry/Point.cpp
+geometry/Transition.cpp
+geometry/Hline.cpp
+geometry/Obstacle.cpp
+geometry/SubRoom.cpp
+geometry/Crossing.cpp
+geometry/NavLine.cpp
+geometry/Room.cpp
+geometry/Wall.cpp
+geometry/Goal.cpp
+
+IO/GeoFileParser.cpp
+IO/IniFileParser.cpp
+IO/IODispatcher.cpp
+IO/OutputHandler.cpp
+IO/PedDistributionParser.cpp
+IO/TraVisToClient.cpp
+
+math/ForceModel.cpp
+math/Mathematics.cpp
+math/ODESolver.cpp
+math/GCFMModel.cpp
+math/GompertzModel.cpp
+math/GradientModel.cpp
+math/VelocityModel.cpp
+math/OperationalModel.cpp
+
+
+mpi/LCGrid.cpp
+
+pedestrian/Ellipse.cpp
+pedestrian/PedDistributor.cpp
+pedestrian/Pedestrian.cpp
+pedestrian/AgentsParameters.cpp
+pedestrian/Knowledge.cpp
+pedestrian/AgentsQueue.cpp
+pedestrian/AgentsSource.cpp
+pedestrian/Pedestrian.cpp
+pedestrian/AgentsSourcesManager.cpp
+pedestrian/StartDistribution.cpp
+
+
+#voronoi/VoronoiDiagramGenerator.cpp
+voronoi-boost/VoronoiPositionGenerator.cpp
+
+#floorfield
+routing/ff_router/ffRouter.cpp
+#routing/ff_router/LocalFloorfieldViaFM.cpp
+routing/ff_router/FloorfieldViaFM.cpp
+#routing/ff_router/FFKit.cpp
+routing/ff_router/UnivFFviaFM.cpp
+
+#global_shortest
+routing/global_shortest/AccessPoint.cpp
+routing/global_shortest/GlobalRouter.cpp
+routing/global_shortest/DTriangulation.cpp
+
+#general
+routing/DirectionStrategy.cpp
+routing/Router.cpp
+routing/RoutingEngine.cpp
+
+
+#quickest
+routing/quickest/QuickestPathRouter.cpp
+
+#Smoke router
+routing/smoke_router/SmokeRouter.cpp
+routing/smoke_router/GraphNetwork.cpp
+routing/smoke_router/NavigationGraph.cpp
+routing/smoke_router/BrainStorage.cpp
+routing/smoke_router/navigation_graph/GraphEdge.cpp
+routing/smoke_router/navigation_graph/GraphVertex.cpp
+routing/smoke_router/sensor/RoomToFloorSensor.cpp
+routing/smoke_router/sensor/SensorManager.cpp
+routing/smoke_router/sensor/AbstractSensor.cpp
+routing/smoke_router/sensor/DiscoverDoorsSensor.cpp
+routing/smoke_router/sensor/JamSensor.cpp
+routing/smoke_router/sensor/LastDestinationsSensor.cpp
+routing/smoke_router/sensor/locater.cpp
+routing/smoke_router/cognitiveMap/associations.cpp
+routing/smoke_router/cognitiveMap/connection.cpp
+routing/smoke_router/cognitiveMap/cognitivemap.cpp
+routing/smoke_router/cognitiveMap/landmark.cpp
+routing/smoke_router/cognitiveMap/region.cpp
+routing/smoke_router/cognitiveMap/youareherepointer.cpp
+routing/smoke_router/cognitiveMap/cogmapoutputhandler.cpp
+routing/smoke_router/cognitiveMap/landmarknetwork.cpp
+routing/smoke_router/Brain.cpp
+routing/smoke_router/cognitiveMap/internnavigationnetwork.cpp
+visiLibity/source_code/visilibity.cpp
+
+poly2tri/common/shapes.cpp
+poly2tri/sweep/sweep_context.cpp
+poly2tri/sweep/advancing_front.cpp
+poly2tri/sweep/sweep.cpp
+poly2tri/sweep/cdt.cpp
+events/EventManager.cpp
+events/Event.cpp
+
+JPSfire/generic/FDSMesh.cpp
+JPSfire/generic/Knot.cpp
+JPSfire/generic/FDSMeshStorage.cpp
+JPSfire/A_smoke_sensor/SmokeSensor.cpp
+JPSfire/B_walking_speed/WalkingSpeed.cpp
+JPSfire/C_toxicity_analysis/ToxicityAnalysis.cpp
+JPSfire/C_toxicity_analysis/ToxicityOutputhandler.cpp
+
+math/KrauszModel.cpp)
 
 set(header_files
 
-        #floorfield
-        routing/ff_router/ffRouter.h
-        routing/ff_router/RectGrid.h
-        routing/ff_router/Trial.h
-        #routing/ff_router/LocalFloorfieldViaFM.h
-        routing/ff_router/FloorfieldViaFM.h
-        #routing/ff_router/FFKit.h
-        routing/ff_router/UnivFFviaFM.h
-
-        #general
-        routing/DirectionStrategy.h
-        routing/DummyRouter.h
-        routing/GlobalRouter.h
-        routing/QuickestPathRouter.h
-        routing/SafestPathRouter.h
-        routing/Router.h
-        routing/RoutingEngine.h
-
-        #global_shortest
-        routing/global_shortest/GlobalRouter.h
-        routing/global_shortest/AccessPoint.h
-        routing/global_shortest/DTriangulation.h
-
-        #quickest
-        routing/quickest/QuickestPathRouter.h
-
-        #Smoke router
-        routing/smoke_router/SmokeRouter.h
-        routing/smoke_router/GraphNetwork.h
-        routing/smoke_router/NavigationGraph.h
-        routing/smoke_router/BrainStorage.h
-        routing/smoke_router/navigation_graph/GraphEdge.h
-        routing/smoke_router/navigation_graph/GraphVertex.h
-        routing/smoke_router/sensor/AbstractSensor.h
-        routing/smoke_router/sensor/RoomToFloorSensor.h
-        routing/smoke_router/sensor/SensorManager.h
-        routing/smoke_router/sensor/DiscoverDoorsSensor.h
-        routing/smoke_router/sensor/JamSensor.h
-        routing/smoke_router/sensor/LastDestinationsSensor.h
-        routing/smoke_router/sensor/locater.h
-        routing/smoke_router/cognitiveMap/associations.h
-        routing/smoke_router/cognitiveMap/connection.cpp
-        routing/smoke_router/cognitiveMap/cognitivemap.h
-        routing/smoke_router/cognitiveMap/landmark.h
-        routing/smoke_router/cognitiveMap/region.h
-        routing/smoke_router/cognitiveMap/youareherepointer.h
-        routing/smoke_router/cognitiveMap/cogmapoutputhandler.h
-        routing/smoke_router/cognitiveMap/landmarknetwork.h
-        routing/smoke_router/Brain.h
-        routing/smoke_router/cognitiveMap/internnavigationnetwork.h
-        visiLibity/source_code/visilibity.hpp
-
-        pedestrian/Pedestrian.h
-        pedestrian/PedDistributor.h
-        pedestrian/Ellipse.h
-        pedestrian/AgentsParameters.h
-        pedestrian/Knowledge.h
-        pedestrian/AgentsQueue.h
-        pedestrian/AgentsSource.h
-        pedestrian/Pedestrian.h
-        pedestrian/AgentsSourcesManager.h
-        pedestrian/StartDistribution.h
-        #voronoi/VoronoiDiagramGenerator.h
-
-        voronoi-boost/VoronoiPositionGenerator.h
-
-        mpi/LCGrid.h
-
-        tinyxml/tinyxml.h
-        tinyxml/tinystr.h
-
-        general/ArgumentParser.h
-        general/Configuration.h
-        general/Macros.h
-        general/randomnumbergenerator.h
-
-        geometry/Crossing.h
-        geometry/NavLine.h
-        geometry/Room.h
-        geometry/Building.h
-        geometry/Wall.h
-        geometry/Line.h
-        geometry/Point.h
-        geometry/Transition.h
-        geometry/Hline.h
-        geometry/Obstacle.h
-        geometry/SubRoom.h
-        geometry/Goal.h
-
-        IO/GeoFileParser.h
-        IO/IniFileParser.h
-        IO/IODispatcher.h
-        IO/OutputHandler.h
-        IO/PedDistributionParser.h
-        IO/TraVisToClient.h
-
-        math/ForceModel.h
-        math/Mathematics.h
-        math/ODESolver.h
-        math/GCFMModel.h
-        math/GompertzModel.h
-        math/GradientModel.h
-        math/VelocityModel.h
-        math/OperationalModel.h
-
-
-        poly2tri/poly2tri.h
-        poly2tri/common/shapes.h
-        poly2tri/sweep/cdt.h
-        poly2tri/common/utils.h
-        poly2tri/sweep/sweep_context.h
-        poly2tri/sweep/advancing_front.h
-        poly2tri/sweep/sweep.h
-        events/EventManager.h
-        events/Event.h
-
-        JPSfire/generic/FDSMesh.h
-        JPSfire/generic/Knot.h
-        JPSfire/generic/FDSMeshStorage.h
-        JPSfire/A_smoke_sensor/SmokeSensor.h
-        JPSfire/B_walking_speed/WalkingSpeed.h
-        JPSfire/C_toxicity_analysis/ToxicityAnalysis.h
-        JPSfire/C_toxicity_analysis/ToxicityOutputhandler.h
-        )
+#floorfield
+routing/ff_router/ffRouter.h
+routing/ff_router/RectGrid.h
+routing/ff_router/Trial.h
+#routing/ff_router/LocalFloorfieldViaFM.h
+routing/ff_router/FloorfieldViaFM.h
+#routing/ff_router/FFKit.h
+routing/ff_router/UnivFFviaFM.h
+
+#general
+routing/DirectionStrategy.h
+routing/DummyRouter.h
+routing/GlobalRouter.h
+routing/QuickestPathRouter.h
+routing/SafestPathRouter.h
+routing/Router.h
+routing/RoutingEngine.h
+
+#global_shortest
+routing/global_shortest/GlobalRouter.h
+routing/global_shortest/AccessPoint.h
+routing/global_shortest/DTriangulation.h
+
+#quickest
+routing/quickest/QuickestPathRouter.h
+
+#Smoke router
+routing/smoke_router/SmokeRouter.h
+routing/smoke_router/GraphNetwork.h
+routing/smoke_router/NavigationGraph.h
+routing/smoke_router/BrainStorage.h
+routing/smoke_router/navigation_graph/GraphEdge.h
+routing/smoke_router/navigation_graph/GraphVertex.h
+routing/smoke_router/sensor/AbstractSensor.h
+routing/smoke_router/sensor/RoomToFloorSensor.h
+routing/smoke_router/sensor/SensorManager.h
+routing/smoke_router/sensor/DiscoverDoorsSensor.h
+routing/smoke_router/sensor/JamSensor.h
+routing/smoke_router/sensor/LastDestinationsSensor.h
+routing/smoke_router/sensor/locater.h
+routing/smoke_router/cognitiveMap/associations.h
+routing/smoke_router/cognitiveMap/connection.cpp
+routing/smoke_router/cognitiveMap/cognitivemap.h
+routing/smoke_router/cognitiveMap/landmark.h
+routing/smoke_router/cognitiveMap/region.h
+routing/smoke_router/cognitiveMap/youareherepointer.h
+routing/smoke_router/cognitiveMap/cogmapoutputhandler.h
+routing/smoke_router/cognitiveMap/landmarknetwork.h
+routing/smoke_router/Brain.h
+routing/smoke_router/cognitiveMap/internnavigationnetwork.h
+visiLibity/source_code/visilibity.hpp
+
+pedestrian/Pedestrian.h
+pedestrian/PedDistributor.h
+pedestrian/Ellipse.h
+pedestrian/AgentsParameters.h
+pedestrian/Knowledge.h
+pedestrian/AgentsQueue.h
+pedestrian/AgentsSource.h
+pedestrian/Pedestrian.h
+pedestrian/AgentsSourcesManager.h
+pedestrian/StartDistribution.h
+#voronoi/VoronoiDiagramGenerator.h
+
+voronoi-boost/VoronoiPositionGenerator.h
+
+mpi/LCGrid.h
+
+tinyxml/tinyxml.h
+tinyxml/tinystr.h
+
+general/ArgumentParser.h
+general/Configuration.h
+general/Macros.h
+general/randomnumbergenerator.h
+
+geometry/Crossing.h
+geometry/NavLine.h
+geometry/Room.h
+geometry/Building.h
+geometry/Wall.h
+geometry/Line.h
+geometry/Point.h
+geometry/Transition.h
+geometry/Hline.h
+geometry/Obstacle.h
+geometry/SubRoom.h
+geometry/Goal.h
+
+IO/GeoFileParser.h
+IO/IniFileParser.h
+IO/IODispatcher.h
+IO/OutputHandler.h
+IO/PedDistributionParser.h
+IO/TraVisToClient.h
+
+math/ForceModel.h
+math/Mathematics.h
+math/ODESolver.h
+math/GCFMModel.h
+math/GompertzModel.h
+math/GradientModel.h
+math/VelocityModel.h
+math/OperationalModel.h
+
+
+poly2tri/poly2tri.h
+poly2tri/common/shapes.h
+poly2tri/sweep/cdt.h
+poly2tri/common/utils.h
+poly2tri/sweep/sweep_context.h
+poly2tri/sweep/advancing_front.h
+poly2tri/sweep/sweep.h
+events/EventManager.h
+events/Event.h
+
+JPSfire/generic/FDSMesh.h
+JPSfire/generic/Knot.h
+JPSfire/generic/FDSMeshStorage.h
+JPSfire/A_smoke_sensor/SmokeSensor.h
+JPSfire/B_walking_speed/WalkingSpeed.h
+JPSfire/C_toxicity_analysis/ToxicityAnalysis.h
+JPSfire/C_toxicity_analysis/ToxicityOutputhandler.h
+)
 
 SET(AIROUTER_SRC
-        #AI router
-        routing/ai_router/AIRouter.cpp
-        routing/ai_router/BrainStorage.cpp
-        routing/ai_router/cognitiveMap/associations.cpp
-        routing/ai_router/cognitiveMap/connection.cpp
-        routing/ai_router/cognitiveMap/cognitivemap.cpp
-        routing/ai_router/cognitiveMap/landmark.cpp
-        routing/ai_router/cognitiveMap/region.cpp
-        routing/ai_router/cognitiveMap/landmarknetwork.cpp
-        routing/ai_router/cognitiveMap/internnavigationnetwork.cpp
-        routing/ai_router/perception/visualsystem.cpp
-        routing/ai_router/perception/visibleenvironment.cpp
-        routing/ai_router/perception/cgalgeometry.cpp
-        routing/ai_router/perception/sign.cpp
-        routing/ai_router/Cortex.cpp
+#AI router
+routing/ai_router/AIRouter.cpp
+routing/ai_router/BrainStorage.cpp
+routing/ai_router/cognitiveMap/associations.cpp
+routing/ai_router/cognitiveMap/connection.cpp
+routing/ai_router/cognitiveMap/cognitivemap.cpp
+routing/ai_router/cognitiveMap/landmark.cpp
+routing/ai_router/cognitiveMap/region.cpp
+routing/ai_router/cognitiveMap/landmarknetwork.cpp
+routing/ai_router/cognitiveMap/internnavigationnetwork.cpp
+routing/ai_router/perception/visualsystem.cpp
+routing/ai_router/perception/visibleenvironment.cpp
+routing/ai_router/perception/cgalgeometry.cpp
+routing/ai_router/perception/sign.cpp
+routing/ai_router/Cortex.cpp
 )
 SET(AIROUTER_HDR
-        #AI router
-        routing/ai_router/AIRouter.h
-        routing/ai_router/BrainStorage.h
-        routing/ai_router/cognitiveMap/associations.h
-        routing/ai_router/cognitiveMap/connection.cpp
-        routing/ai_router/cognitiveMap/cognitivemap.h
-        routing/ai_router/cognitiveMap/landmark.h
-        routing/ai_router/cognitiveMap/region.h
-        routing/ai_router/cognitiveMap/landmarknetwork.h
-        routing/ai_router/cognitiveMap/internnavigationnetwork.h
-        routing/ai_router/perception/visualsystem.h
-        routing/ai_router/perception/visibleenvironment.h
-        routing/ai_router/perception/cgalgeometry.h
-        routing/ai_router/perception/sign.h
-        routing/ai_router/Cortex.h
+#AI router
+routing/ai_router/AIRouter.h
+routing/ai_router/BrainStorage.h
+routing/ai_router/cognitiveMap/associations.h
+routing/ai_router/cognitiveMap/connection.cpp
+routing/ai_router/cognitiveMap/cognitivemap.h
+routing/ai_router/cognitiveMap/landmark.h
+routing/ai_router/cognitiveMap/region.h
+routing/ai_router/cognitiveMap/landmarknetwork.h
+routing/ai_router/cognitiveMap/internnavigationnetwork.h
+routing/ai_router/perception/visualsystem.h
+routing/ai_router/perception/visibleenvironment.h
+routing/ai_router/perception/cgalgeometry.h
+routing/ai_router/perception/sign.h
+routing/ai_router/Cortex.h
 )
 
 message(STATUS "AIROUTER: ${AIROUTER}")
 if(CGAL_FOUND AND AIROUTER)
-  SET(source_files ${source_files} ${AIROUTER_SRC})
-  SET(header_files ${header_files} ${AIROUTER_HDR})
-  message(STATUS "USE AI ROUTER")
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DAIROUTER")
+SET(source_files ${source_files} ${AIROUTER_SRC})
+SET(header_files ${header_files} ${AIROUTER_HDR})
+message(STATUS "USE AI ROUTER")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DAIROUTER")
 endif()
 
 add_library(core STATIC ${source_files})
@@ -549,48 +596,48 @@ target_link_libraries(cnpy ${ZLIB_LIBRARIES})
 add_executable(jpscore main.cpp)
 
 if (Boost_FOUND)
-    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})
-
-    # suppress warnings in boost libraries with attribute SYSTEM
-    include_directories(SYSTEM ${Boost_INCLUDE_DIR})
-    target_link_libraries(core ${Boost_LIBRARIES} cnpy)
+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})
+
+# suppress warnings in boost libraries with attribute SYSTEM
+include_directories(SYSTEM ${Boost_INCLUDE_DIR})
+target_link_libraries(core ${Boost_LIBRARIES} cnpy)
 endif ()
 
 
 
 if (GMP_FOUND)
-    message(STATUS "GMP FOUND: " ${GMP_FOUND})
-    message(STATUS "GMP_LIBRARY: " ${GMP_LIBRARIES})
-    message(STATUS "GMP_INCLUDE_DIR: " ${GMP_INCLUDE_DIR})
-    include_directories(SYSTEM ${GMP_INCLUDE_DIR})
+message(STATUS "GMP FOUND: " ${GMP_FOUND})
+message(STATUS "GMP_LIBRARY: " ${GMP_LIBRARIES})
+message(STATUS "GMP_INCLUDE_DIR: " ${GMP_INCLUDE_DIR})
+include_directories(SYSTEM ${GMP_INCLUDE_DIR})
 
 endif()
 
 if (MPFR_FOUND)
-    message(STATUS "MPFR FOUND: " ${MPFR_FOUND})
-    message(STATUS "MPFR_LIBRARY: " ${MPFR_LIBRARIES})
-    message(STATUS "MPFR_INCLUDE_DIR: " ${MPFR_INCLUDE_DIR})
-    include_directories(SYSTEM ${MPFR_INCLUDE_DIR})
-    #target_link_libraries(jpscore ${MPFR_LIBRARIES})
+message(STATUS "MPFR FOUND: " ${MPFR_FOUND})
+message(STATUS "MPFR_LIBRARY: " ${MPFR_LIBRARIES})
+message(STATUS "MPFR_INCLUDE_DIR: " ${MPFR_INCLUDE_DIR})
+include_directories(SYSTEM ${MPFR_INCLUDE_DIR})
+#target_link_libraries(jpscore ${MPFR_LIBRARIES})
 endif()
 
 
 if (CGAL_FOUND)
-    message(STATUS "CGAL FOUND: " ${CGAL_FOUND})
-    message(STATUS "CGAL_LIBRARY_DIRS: " ${CGAL_LIBRARIES_DIR})
-    message(STATUS "CGAL_INCLUDE_DIRS: " ${CGAL_INCLUDE_DIRS})
-    #message(STATUS "CGAL_LIB_VERSION: " ${CGAL_LIB_VERSION})
-    message(STATUS "CGAL_libraries: " ${CGAL_LIBRARY})
-    #link_directories(${CGAL_LIBRARIES_DIR})
-    #link_directories(${)
-    include_directories(SYSTEM ${CGAL_INCLUDE_DIRS})
-    #message(STATUS "CGAL_3rdparty" ${CGAL_3RD_PARTY_LIBRARIES})
-    #target_link_libraries(jpscore ${CGAL_LIBRARIES})
+message(STATUS "CGAL FOUND: " ${CGAL_FOUND})
+message(STATUS "CGAL_LIBRARY_DIRS: " ${CGAL_LIBRARIES_DIR})
+message(STATUS "CGAL_INCLUDE_DIRS: " ${CGAL_INCLUDE_DIRS})
+#message(STATUS "CGAL_LIB_VERSION: " ${CGAL_LIB_VERSION})
+message(STATUS "CGAL_libraries: " ${CGAL_LIBRARY})
+#link_directories(${CGAL_LIBRARIES_DIR})
+#link_directories(${)
+include_directories(SYSTEM ${CGAL_INCLUDE_DIRS})
+#message(STATUS "CGAL_3rdparty" ${CGAL_3RD_PARTY_LIBRARIES})
+#target_link_libraries(jpscore ${CGAL_LIBRARIES})
 
 endif()
 
@@ -598,7 +645,7 @@ endif()
 target_link_libraries(jpscore core)
 
 if (WIN32)
-    target_link_libraries(jpscore core wsock32)
+target_link_libraries(jpscore core wsock32)
 endif (WIN32)
 
 target_link_libraries(jpscore ${GMP_LIBRARIES} ${MPFR_LIBRARIES} ${CGAL_LIBRARY} ${CGAL_3RD_PARTY_LIBRARIES})
@@ -658,121 +705,121 @@ target_link_libraries(jpscore ${GMP_LIBRARIES} ${MPFR_LIBRARIES} ${CGAL_LIBRARY}
 #---------------------------- compiler -------------------------------
 # Initialize CXXFLAGS.
 if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${warning_flags}")
-    set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${warning_flags} -O0 -g -Wunused-variable -Wunused-parameter -Wunused-function -Wshadow -Wunused -DTRACE_LOGGING")
-    #    set(CMAKE_CXX_FLAGS_RELEASE        "${CMAKE_CXX_FLAGS_RELEASE} -O3 -DNDEBUG")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${warning_flags}")
+set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${warning_flags} -O0 -g -Wunused-variable -Wunused-parameter -Wunused-function -Wshadow -Wunused -DTRACE_LOGGING")
+#    set(CMAKE_CXX_FLAGS_RELEASE        "${CMAKE_CXX_FLAGS_RELEASE} -O3 -DNDEBUG")
 endif ()
 
 #--------------------
 if (APPLE AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
-    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
-    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
-    SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++")
-    SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -stdlib=libc++")
-    SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -stdlib=libc++")
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
+SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++")
+SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -stdlib=libc++")
+SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -stdlib=libc++")
 endif (APPLE AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
 
 if (NOT CMAKE_GENERATOR MATCHES "Xcode|Visual Studio")
-    include(CheckCXXCompilerFlag)
-    CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
-    CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
-
-    if (COMPILER_SUPPORTS_CXX11)
-        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
-    elseif (COMPILER_SUPPORTS_CXX0X)
-        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
-    else ()
-        message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
-    endif ()
+include(CheckCXXCompilerFlag)
+CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
+CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
+
+if (COMPILER_SUPPORTS_CXX11)
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+elseif (COMPILER_SUPPORTS_CXX0X)
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
+else ()
+message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
+endif ()
 endif ()
 
 
 if (MSVC)
-  message(STATUS "MSVC: " ${MSVC})
+message(STATUS "MSVC: " ${MSVC})
 elseif (MSVC_IDE)
-  message(STATUS "MSVC_IDE: " ${MSVC_IDE})
+message(STATUS "MSVC_IDE: " ${MSVC_IDE})
 elseif(MSVC60)
-  message(STATUS "MSVC60: " ${MSVC60})
+message(STATUS "MSVC60: " ${MSVC60})
 elseif(MSVC71)
-  message(STATUS "MSVC71: " ${MSVC71})
+message(STATUS "MSVC71: " ${MSVC71})
 elseif(MSVC80)
-  message(STATUS "MSVC80: " ${MSVC80})
+message(STATUS "MSVC80: " ${MSVC80})
 elseif(MSVC90)
-  message(STATUS "MSVC90: " ${MSVC90})
+message(STATUS "MSVC90: " ${MSVC90})
 elseif(MSVC10)
-  message(STATUS "MSVC10: " ${MSVC10})
+message(STATUS "MSVC10: " ${MSVC10})
 elseif(MSVC12)
-  message(STATUS "MSVC12: " ${MSVC12})
+message(STATUS "MSVC12: " ${MSVC12})
 elseif(MSVC13)
-  message(STATUS "MSVC13: " ${MSVC13})
+message(STATUS "MSVC13: " ${MSVC13})
 endif()
 #---------------------
 message(STATUS "C++ Compiler: " ${CMAKE_CXX_COMPILER})
 if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
-    message(STATUS "Using Clang " ${CMAKE_CXX_COMPILER_VERSION})
+message(STATUS "Using Clang " ${CMAKE_CXX_COMPILER_VERSION})
 endif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
 if (CMAKE_COMPILER_IS_GNUCXX)
-    message(STATUS "Using g++ " ${CMAKE_CXX_COMPILER_VERSION})
+message(STATUS "Using g++ " ${CMAKE_CXX_COMPILER_VERSION})
 endif (CMAKE_COMPILER_IS_GNUCXX)
 
 if (CMAKE_BUILD_TYPE MATCHES Debug)
-    set(CMAKE_CXX_LDFLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage")
-    message(STATUS "Debug flags: " ${CMAKE_CXX_FLAGS} " " ${CMAKE_CXX_FLAGS_DEBUG})
+set(CMAKE_CXX_LDFLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fprofile-arcs -ftest-coverage")
+message(STATUS "Debug flags: " ${CMAKE_CXX_FLAGS} " " ${CMAKE_CXX_FLAGS_DEBUG})
 else (CMAKE_BUILD_TYPE MATCHES Debug)
-    message(STATUS "Release flags: " ${CMAKE_CXX_FLAGS} " ,  " ${CMAKE_CXX_FLAGS_RELEASE})
+message(STATUS "Release flags: " ${CMAKE_CXX_FLAGS} " ,  " ${CMAKE_CXX_FLAGS_RELEASE})
 endif (CMAKE_BUILD_TYPE MATCHES Debug)
 
 # PGI ++ Flags
 if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "PGI")
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --c++11 -Minform=inform")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --c++11 -Minform=inform")
 endif ()
 
 
 # ----------------------------- cTest ------------------------------------------
 if (BUILD_TESTING OR BUILD_CPPUNIT_TEST)
-    set(counter "0")
-    SET(BUILD_TEST_TIMEOUT 10800 CACHE STRING "Global timeout on all tests (seconds).")
-    SET(DART_TESTING_TIMEOUT "${BUILD_TEST_TIMEOUT}" CACHE STRING "" FORCE)
-    message(STATUS "Timeout: " ${BUILD_TEST_TIMEOUT} " s")
-    enable_testing() # adds another build target, which is test for Makefile generators
-    include(CTest) # adding Dart support
-
-    # test if code compiles and runs default setting. Takes about 30 seconds
-
-    # link_directories(${Boost_LIBRARY_DIRS})
-    foreach (test_src ${test_files})
-        MATH(EXPR counter "${counter}+1")
-        GET_FILENAME_COMPONENT(test ${test_src} NAME_WE)
-        message(STATUS "Add test " ${counter} "  : " ${test})
-        add_executable(${test} ${test_src})
-        target_link_libraries(${test} core ${Boost_LIBRARIES})
-        add_test(NAME ${test} COMMAND ${test})
-    endforeach (test_src ${test_files})
+set(counter "0")
+SET(BUILD_TEST_TIMEOUT 10800 CACHE STRING "Global timeout on all tests (seconds).")
+SET(DART_TESTING_TIMEOUT "${BUILD_TEST_TIMEOUT}" CACHE STRING "" FORCE)
+message(STATUS "Timeout: " ${BUILD_TEST_TIMEOUT} " s")
+enable_testing() # adds another build target, which is test for Makefile generators
+include(CTest) # adding Dart support
+
+# test if code compiles and runs default setting. Takes about 30 seconds
+
+# link_directories(${Boost_LIBRARY_DIRS})
+foreach (test_src ${test_files})
+MATH(EXPR counter "${counter}+1")
+GET_FILENAME_COMPONENT(test ${test_src} NAME_WE)
+message(STATUS "Add test " ${counter} "  : " ${test})
+add_executable(${test} ${test_src})
+target_link_libraries(${test} core ${Boost_LIBRARIES})
+add_test(NAME ${test} COMMAND ${test})
+endforeach (test_src ${test_files})
 endif (BUILD_TESTING OR BUILD_CPPUNIT_TEST)
 
 if (BUILD_TESTING)
-    #  add_test (jpscore_compile ${CMAKE_CTEST_COMMAND}
-    #  --build-and-test "${CMAKE_SOURCE_DIR}"  "${CMAKE_SOURCE_DIR}" #"${EXECUTABLE_OUTPUT_PATH}" #"${CMAKE_BINARY_DIR}"
-    #  --build-generator ${CMAKE_GENERATOR}
-    #  --build-makeprogram ${CMAKE_MAKE_PROGRAM} -j${PROCESSOR_COUNT}
-    #  --build-two-config
-    #  --build-exe-dir ${EXECUTABLE_OUTPUT_PATH}  # todo wo soll der exe hin?: ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
-    #  --build-project JPScore
-    #  --test-command jpscore --ini=${CMAKE_SOURCE_DIR}/inputfiles/Default/ini.xml
-    #  )
-    find_package(PythonInterp)
-    if (PYTHONINTERP_FOUND)
-        message(STATUS "Found Python: " ${PYTHON_EXECUTABLE})
-        foreach (test_src ${test_py_files})
-            MATH(EXPR counter "${counter}+1")
-            GET_FILENAME_COMPONENT(test ${test_src} NAME_WE)
-            message(STATUS "Add py test " ${counter} "  : " ${test})
-            # message (STATUS "Add python test: " ${test} " | test_src: " ${PYTHON_EXECUTABLE} " " ${test_src})
-            add_test(NAME ${test} COMMAND ${PYTHON_EXECUTABLE} ${test_src})
-        endforeach (test_src ${test_py_files})
-        # set (test_parameters "${CMAKE_SOURCE_DIR}")
-        # add_test(NAME flow  COMMAND "${CMAKE_TEST_DIR}/testflow.py" "${test_parameters}")
-    endif (PYTHONINTERP_FOUND)
+#  add_test (jpscore_compile ${CMAKE_CTEST_COMMAND}
+#  --build-and-test "${CMAKE_SOURCE_DIR}"  "${CMAKE_SOURCE_DIR}" #"${EXECUTABLE_OUTPUT_PATH}" #"${CMAKE_BINARY_DIR}"
+#  --build-generator ${CMAKE_GENERATOR}
+#  --build-makeprogram ${CMAKE_MAKE_PROGRAM} -j${PROCESSOR_COUNT}
+#  --build-two-config
+#  --build-exe-dir ${EXECUTABLE_OUTPUT_PATH}  # todo wo soll der exe hin?: ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
+#  --build-project JPScore
+#  --test-command jpscore --ini=${CMAKE_SOURCE_DIR}/inputfiles/Default/ini.xml
+#  )
+find_package(PythonInterp)
+if (PYTHONINTERP_FOUND)
+message(STATUS "Found Python: " ${PYTHON_EXECUTABLE})
+foreach (test_src ${test_py_files})
+MATH(EXPR counter "${counter}+1")
+GET_FILENAME_COMPONENT(test ${test_src} NAME_WE)
+message(STATUS "Add py test " ${counter} "  : " ${test})
+# message (STATUS "Add python test: " ${test} " | test_src: " ${PYTHON_EXECUTABLE} " " ${test_src})
+add_test(NAME ${test} COMMAND ${PYTHON_EXECUTABLE} ${test_src})
+endforeach (test_src ${test_py_files})
+# set (test_parameters "${CMAKE_SOURCE_DIR}")
+# add_test(NAME flow  COMMAND "${CMAKE_TEST_DIR}/testflow.py" "${test_parameters}")
+endif (PYTHONINTERP_FOUND)
 endif (BUILD_TESTING)
 
 
@@ -780,25 +827,25 @@ install(TARGETS jpscore DESTINATION bin)
 
 # ------------- CPACK ------------------------------
 IF(CMAKE_SYSTEM_NAME STREQUAL Linux)
-  SET(CPACK_GENERATOR "DEB")
-
-  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 "nowardev")
-  SET(CPACK_PACKAGE_CONTACT "m.chraibi@fz-juelich.de")
-  SET(CPACK_PACKAGE_VERSION_MAJOR "${JPSCORE_MAJOR_VERSION}")
-  SET(CPACK_PACKAGE_VERSION_MINOR "${JPSCORE_MINOR_VERSION}")
-  SET(CPACK_PACKAGE_VERSION_PATCH "${JPSCORE_PATCH_VERSION}")
-  SET(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${JPSCORE_VERSION}")
-  SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${JPSCORE_VERSION}")
-  #SET(CPACK_DEBIAN_PACKAGE_DEPENDS " Boost (>= 1.59) ")
-  SET(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
-  SET( CPACK_DEBIAN_PACKAGE_HOMEPAGE "http://jupedsim.org")
-  SET(CPACK_DEBIAN_PACKAGE_SUGGESTS, "jpsvis, jpsreport, jpseditor")
-  SET(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
-  SET(CPACK_DEBIAN_PACKAGE_SECTION "science")
-  SET(CPACK_DEBIAN_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR})
-
-
-  INCLUDE(CPack)
+SET(CPACK_GENERATOR "DEB")
+
+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 "nowardev")
+SET(CPACK_PACKAGE_CONTACT "m.chraibi@fz-juelich.de")
+SET(CPACK_PACKAGE_VERSION_MAJOR "${JPSCORE_MAJOR_VERSION}")
+SET(CPACK_PACKAGE_VERSION_MINOR "${JPSCORE_MINOR_VERSION}")
+SET(CPACK_PACKAGE_VERSION_PATCH "${JPSCORE_PATCH_VERSION}")
+SET(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${JPSCORE_VERSION}")
+SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}_${JPSCORE_VERSION}")
+#SET(CPACK_DEBIAN_PACKAGE_DEPENDS " Boost (>= 1.59) ")
+SET(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
+SET( CPACK_DEBIAN_PACKAGE_HOMEPAGE "http://jupedsim.org")
+SET(CPACK_DEBIAN_PACKAGE_SUGGESTS, "jpsvis, jpsreport, jpseditor")
+SET(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
+SET(CPACK_DEBIAN_PACKAGE_SECTION "science")
+SET(CPACK_DEBIAN_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR})
+
+
+INCLUDE(CPack)
 ENDIF(CMAKE_SYSTEM_NAME STREQUAL Linux)
diff --git a/IO/IniFileParser.cpp b/IO/IniFileParser.cpp
index b99b3cec38bbbd663fd3ca17cac156d3d728637d..d50c854f1e3c8b4e6421349265e6eb81a7ed6440 100644
--- a/IO/IniFileParser.cpp
+++ b/IO/IniFileParser.cpp
@@ -45,6 +45,41 @@
 #include "../routing/ai_router/AIRouter.h"
 #include "../routing/ff_router/ffRouter.h"
 
+/* https://stackoverflow.com/questions/38530981/output-compiler-version-in-a-c-program#38531037 */
+std::string ver_string(int a, int b, int c) {
+      std::ostringstream ss;
+      ss << a << '.' << b << '.' << c;
+      return ss.str();
+}
+//https://sourceforge.net/p/predef/wiki/Compilers/
+std::string true_cxx =
+#ifdef __clang__
+      "clang++";
+#elif defined(__GNU__)
+"g++";
+#elif defined(__MINGW32__)
+   "MinGW";
+#elif defined(_MSC_VER)
+  "Visual Studio";
+#else
+"Compiler not identified";
+#endif
+
+
+std::string true_cxx_ver =
+#ifdef __clang__
+    ver_string(__clang_major__, __clang_minor__, __clang_patchlevel__);
+#elif defined(__GNU__)
+    ver_string(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__);
+#elif defined(__MINGW32__)
+ver_string(__MINGW32__, __MINGW32_MAJOR_VERSION, __MINGW32_MINOR_VERSION);
+#elif defined( _MSC_VER)
+    ver_string(_MSC_VER, _MSC_FULL_VER,_MSC_BUILD);
+#else
+"";
+#endif
+
+
 IniFileParser::IniFileParser(Configuration* config)
 {
      _config = config;
@@ -97,6 +132,25 @@ bool IniFileParser::Parse(std::string iniFile)
           Log->Write("ERROR:\t Wrong header version. Only version greater than %s is supported.", JPS_OLD_VERSION);
           return false;
      }
+
+     //logfile
+     if (xMainNode->FirstChild("logfile")) {
+          _config->SetErrorLogFile(
+                    _config->GetProjectRootDir()+xMainNode->FirstChild("logfile")->FirstChild()->Value());
+          _config->SetLog(2);
+          Log->Write("INFO:\tlogfile <%s>", _config->GetErrorLogFile().c_str());
+     }
+
+
+     Log->Write("----\nJuPedSim - JPScore\n");
+     Log->Write("Current date   : %s %s", __DATE__, __TIME__);
+     Log->Write("Version        : %s", JPSCORE_VERSION);
+     Log->Write("Compiler       : %s (%s)", true_cxx.c_str(), true_cxx_ver.c_str());
+     Log->Write("Commit hash    : %s", GIT_COMMIT_HASH);
+     Log->Write("Commit date    : %s", GIT_COMMIT_DATE);
+     Log->Write("Branch         : %s\n----\n", GIT_BRANCH);
+
+
      //seed
      if (xMainNode->FirstChild("seed")) {
           TiXmlNode* seedNode = xMainNode->FirstChild("seed")->FirstChild();
@@ -149,13 +203,6 @@ bool IniFileParser::Parse(std::string iniFile)
      _config->SetMaxOpenMPThreads(omp_get_max_threads());
      Log->Write("INFO:\tUsing num_threads <%d> threads (%d available)", _config->GetMaxOpenMPThreads(), max_threads);
 
-     //logfile
-     if (xMainNode->FirstChild("logfile")) {
-          _config->SetErrorLogFile(
-                    _config->GetProjectRootDir()+xMainNode->FirstChild("logfile")->FirstChild()->Value());
-          _config->SetLog(2);
-          Log->Write("INFO:\tlogfile <%s>", _config->GetErrorLogFile().c_str());
-     }
      //display statistics
      if (xMainNode->FirstChild("show_statistics")) {
           std::string value = xMainNode->FirstChild("show_statistics")->FirstChild()->Value();
diff --git a/Simulation.cpp b/Simulation.cpp
index 14f85dbf01ca70d33ab5bfeda83a8fe843601ce3..471fb7ef462b82abc4a0701aad0106ea53f3b4c1 100644
--- a/Simulation.cpp
+++ b/Simulation.cpp
@@ -95,7 +95,7 @@ bool Simulation::InitArgs()
     }
     case 2: {
         char name[CLENGTH] = "";
-        sprintf(name, "%s.P0.dat", _config->GetErrorLogFile().c_str());
+        sprintf(name, "%s.txt", _config->GetErrorLogFile().c_str());
         if (Log)
             delete Log;
         Log = new FileHandler(name);
@@ -346,7 +346,7 @@ void Simulation::UpdateRoutesAndLocations()
                //exit(EXIT_FAILURE);
 #pragma omp critical(Simulation_Update_pedsToRemove)
                {
-                    pedsToRemove.push_back(ped);
+                    pedsToRemove.insert(ped);
                     Log->incrementDeletedAgents();
                }
           }
diff --git a/general/ArgumentParser.cpp b/general/ArgumentParser.cpp
index fb1ae9a0e4d232c05ec57eccb3f062089b602f48..e6838806cfe7d8c5f0dfb742587c348512823dd7 100644
--- a/general/ArgumentParser.cpp
+++ b/general/ArgumentParser.cpp
@@ -49,14 +49,15 @@
 
 using namespace std;
 
+
+
+
 void ArgumentParser::Usage(const std::string file)
 {
-     fprintf(stderr, "\n\nYou are actually using JuPedsim version %s  \n\n", JPS_VERSION);
      fprintf(stderr, "Usages: \n");
      fprintf(stderr, "     %s  <path to file>  start the simulation with the specified file.\n", file.c_str());
      fprintf(stderr, "     %s                  search and use the file ini.xml in the current directory.\n",
                file.c_str());
-     fprintf(stderr, "     %s  -v/--version    display the current version.\n", file.c_str());
      fprintf(stderr, "     %s  -h/--help       display this text.\n", file.c_str());
 #ifdef _JPS_AS_A_SERVICE
      fprintf(stderr, "     %s  --as-a-service -p <port nr> runs jps as a service at port <port nr>.\n", file.c_str());
@@ -77,6 +78,15 @@ bool ArgumentParser::ParseArgs(int argc, char** argv)
      if (argc==1) {
           Log->Write(
                      "INFO: \tTrying to load the default configuration from the file <ini.xml>");
+     // first logs will go to stdout
+          Log->Write("----\nJuPedSim - JPScore\n");
+          Log->Write("Current date   : %s %s", __DATE__, __TIME__);
+          Log->Write("Version        : %s", JPSCORE_VERSION);
+          // Log->Write("Compiler       : %s (%s)", true_cxx.c_str(), true_cxx_ver.c_str());
+          Log->Write("Commit hash    : %s", GIT_COMMIT_HASH);
+          Log->Write("Commit date    : %s", GIT_COMMIT_DATE);
+          Log->Write("Branch         : %s\n----\n", GIT_BRANCH);
+
           IniFileParser* p = new IniFileParser(_config);
           if (!p->Parse("ini.xml")) {
                Usage(argv[0]);
@@ -90,10 +100,6 @@ bool ArgumentParser::ParseArgs(int argc, char** argv)
           Usage(argv[0]);
           return false;
      }
-     else if (argument=="-v" || argument=="--version") {
-          fprintf(stderr, "You are actually using JuPedsim/jpscore version %s  \n\n", JPS_VERSION);
-          return false;
-     }
 
      // other special case where a single configuration file is submitted
      //check if inifile options are given
@@ -161,4 +167,3 @@ bool ArgumentParser::ParseArgs(int argc, char** argv)
      Usage(argv[0]);
      return false;
 }
-