diff --git a/.appveyor.yml b/.appveyor.yml
index 3c56f8397e7aa243b2028fad7f4f3affe93104ac..cd807f551c3958af231079d6d2610992709c77d0 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -17,7 +17,7 @@ configuration:
   - Release
 
 cache:
-  - C:\projects\deps\conan
+  - C:\projects\deps\conan -> scripts/cmake/ConanSetup.cmake
 
 install:
   # All external dependencies are installed in C:\projects\deps
@@ -25,8 +25,9 @@ install:
 
   # Install conan
   - if not exist "C:\projects\deps\conan\" mkdir C:\projects\deps\conan
-  - set PATH=%PATH%;%PYTHON%/Scripts/
-  - C:\Python27-x64\Scripts\pip.exe install conan
+  - set PATH=%PYTHON%/Scripts/;%PATH%
+  - pip.exe install conan --upgrade
+  - conan remote add -i 0 ogs https://ogs.jfrog.io/ogs/api/conan/conan
 
   # Install Ninja
   - set NINJA_URL="https://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-win.zip"
@@ -43,10 +44,10 @@ before_build:
 
 build_script:
   - mkdir build & cd build
-  - conan install .. # -o gui=True
-  - cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=%configuration% -DBUILD_SHARED_LIBS=OFF -DOGS_EIGEN_DYNAMIC_SHAPE_MATRICES=ON -DOGS_USE_PCH=OFF # -DOGS_BUILD_GUI=ON
+  - cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=%configuration% -DBUILD_SHARED_LIBS=OFF -DOGS_EIGEN_DYNAMIC_SHAPE_MATRICES=ON -DOGS_USE_PCH=OFF -DOGS_USE_CONAN=ON # -DOGS_BUILD_GUI=ON
   - cmake --build . --config %configuration%
-
-test_script:
   - cmake --build . --config %configuration% --target tests
   - cmake --build . --config %configuration% --target ctest
+  # - cmake . -DOGS_BUILD_GUI=ON
+  # - cmake --build . --config %configuration% --target DataExplorer
+
diff --git a/.travis.yml b/.travis.yml
index 99a0b555ee502e48c78084de00cbc62e219fdf6a..89e87d4ce52e900113712f8a293229f56c2b24c5 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -20,12 +20,14 @@ cache:
     - $HOME/cmake-3.1.1-Linux-x86_64
     - $HOME/VTK-Install-7.1
     - $HOME/boost_1_56_0
+    - $HOME/eigen-eigen-dc6cfdf9bcec
     - $HOME/.conan
 
 env:
   global:
     - VTK_DIR=$HOME/VTK-Install-7.1/lib/cmake/vtk-7.1
     - BOOST_ROOT=$HOME/boost_1_56_0
+    - EIGEN3_ROOT=$HOME/eigen-eigen-dc6cfdf9bcec
     - CCACHE_SLOPPINESS=pch_defines,time_macros
 matrix:
   include:
@@ -46,6 +48,7 @@ before_install:
   - if [ "$CASE" != "CHECK" ]; then bash scripts/travis/cmake.sh; fi
   - if [ "$CASE" != "CONAN" ] && [ "$CASE" != "CHECK" ]; then bash scripts/travis/boost.sh; fi
   - if [ "$CASE" != "CONAN" ] && [ "$CASE" != "CHECK" ]; then bash scripts/travis/vtk.sh; fi
+  - if [ "$CASE" != "CONAN" ] && [ "$CASE" != "CHECK" ]; then bash scripts/travis/eigen.sh; fi
   - if [ "$CASE" == "CONAN" ] && [ "$CASE" != "CHECK" ]; then bash scripts/travis/conan.sh; fi
 
 before_script:
diff --git a/Applications/CLI/CMakeLists.txt b/Applications/CLI/CMakeLists.txt
index bb2be2714538f099cdf9d337ff910a2a81094696..97cbdd8f4e843da5bf7a37427162537891167cee 100644
--- a/Applications/CLI/CMakeLists.txt
+++ b/Applications/CLI/CMakeLists.txt
@@ -5,8 +5,6 @@ target_link_libraries(ogs
     PRIVATE BaseLib ApplicationsLib NumLib ProcessLib
 )
 
-ADD_VTK_DEPENDENCY(ogs)
-
 if(OGS_USE_PETSC)
     target_link_libraries(ogs PRIVATE ${PETSC_LIBRARIES})
 endif()
diff --git a/Applications/DataExplorer/DataExplorer.cmake b/Applications/DataExplorer/DataExplorer.cmake
index 75916b3f9d6e53163eee3de33d40c4f5ed0b891d..154a3bc936b06be67c63c3517caef6a940b4c10b 100644
--- a/Applications/DataExplorer/DataExplorer.cmake
+++ b/Applications/DataExplorer/DataExplorer.cmake
@@ -97,8 +97,6 @@ if(VTKFBXCONVERTER_FOUND)
     target_link_libraries(DataExplorer ${VTKFBXCONVERTER_LIBRARIES})
 endif()
 
-ADD_VTK_DEPENDENCY(DataExplorer)
-
 set_property(TARGET DataExplorer PROPERTY FOLDER "DataExplorer")
 
 if(OGS_USE_PCH)
diff --git a/Applications/DataExplorer/DataView/CMakeLists.txt b/Applications/DataExplorer/DataView/CMakeLists.txt
index 9ec327f0e54a990ebe2a043e8f1e2e3c6f256751..969680d8c4c99598622d48bc7c2ca13e094e2578 100644
--- a/Applications/DataExplorer/DataView/CMakeLists.txt
+++ b/Applications/DataExplorer/DataView/CMakeLists.txt
@@ -139,8 +139,6 @@ target_link_libraries(QtDataView
         DataHolderLib logog Qt5::Core Qt5::Gui
 )
 
-ADD_VTK_DEPENDENCY(QtDataView)
-
 if(GEOTIFF_FOUND)
     target_link_libraries(QtDataView PRIVATE ${GEOTIFF_LIBRARIES})
 endif () # GEOTIFF_FOUND
diff --git a/Applications/DataExplorer/VtkVis/CMakeLists.txt b/Applications/DataExplorer/VtkVis/CMakeLists.txt
index b5d1f087d61e6e44154fb53e23e27f15231195ae..2122a15d02bbc68d3395c9a74afa7889437b4c32 100644
--- a/Applications/DataExplorer/VtkVis/CMakeLists.txt
+++ b/Applications/DataExplorer/VtkVis/CMakeLists.txt
@@ -128,8 +128,6 @@ add_library(VtkVis
     ${UIS}
 )
 
-ADD_VTK_DEPENDENCY(VtkVis)
-
 if(GEOTIFF_FOUND)
     include_directories(${GEOTIFF_INCLUDE_DIRS})
     target_link_libraries(VtkVis INTERFACE ${GEOTIFF_LIBRARIES})
diff --git a/Applications/FileIO/CMakeLists.txt b/Applications/FileIO/CMakeLists.txt
index 00b7fadad86ba5a7327503dc416e1891d61a30b3..f9cad965c0cc56fcd41ea51856157b1110b9388a 100644
--- a/Applications/FileIO/CMakeLists.txt
+++ b/Applications/FileIO/CMakeLists.txt
@@ -33,8 +33,6 @@ if(OGS_BUILD_SWMM)
     target_link_libraries(ApplicationsFileIO PRIVATE SwmmInterface)
 endif()
 
-ADD_VTK_DEPENDENCY(ApplicationsFileIO)
-
 if(TARGET Eigen)
     add_dependencies(ApplicationsFileIO Eigen)
 endif()
diff --git a/Applications/Utils/FileConverter/CMakeLists.txt b/Applications/Utils/FileConverter/CMakeLists.txt
index f466c7239a3e9c0a971084700ef8ef2cc2029ce6..52cb36768e583900ad2657dc2776bb8ffa945727 100644
--- a/Applications/Utils/FileConverter/CMakeLists.txt
+++ b/Applications/Utils/FileConverter/CMakeLists.txt
@@ -8,7 +8,6 @@ if (Qt5XmlPatterns_FOUND)
     add_executable(FEFLOW2OGS FEFLOW2OGS.cpp)
     set_target_properties(FEFLOW2OGS PROPERTIES FOLDER Utilities)
     target_link_libraries(FEFLOW2OGS ApplicationsFileIO)
-    ADD_VTK_DEPENDENCY(FEFLOW2OGS)
 endif ()
 
 add_executable(convertGEO convertGEO.cpp)
@@ -17,34 +16,28 @@ target_link_libraries(convertGEO GeoLib ApplicationsFileIO)
 
 add_executable(generateMatPropsFromMatID generateMatPropsFromMatID.cpp )
 target_link_libraries(generateMatPropsFromMatID MeshLib)
-ADD_VTK_DEPENDENCY(generateMatPropsFromMatID)
 set_target_properties(generateMatPropsFromMatID
     PROPERTIES FOLDER Utilities)
 
 add_executable(GMSH2OGS GMSH2OGS.cpp)
 set_target_properties(GMSH2OGS PROPERTIES FOLDER Utilities)
 target_link_libraries(GMSH2OGS ApplicationsFileIO)
-ADD_VTK_DEPENDENCY(GMSH2OGS)
 
 add_executable(OGS2VTK OGS2VTK.cpp)
 set_target_properties(OGS2VTK PROPERTIES FOLDER Utilities)
 target_link_libraries(OGS2VTK MeshLib)
-ADD_VTK_DEPENDENCY(OGS2VTK)
 
 add_executable(VTK2OGS VTK2OGS.cpp)
 set_target_properties(VTK2OGS PROPERTIES FOLDER Utilities)
 target_link_libraries(VTK2OGS MeshLib)
-ADD_VTK_DEPENDENCY(VTK2OGS)
 
 add_executable(VTK2TIN VTK2TIN.cpp)
 set_target_properties(VTK2TIN PROPERTIES FOLDER Utilities)
 target_link_libraries(VTK2TIN MeshLib)
-ADD_VTK_DEPENDENCY(VTK2TIN)
 
 add_executable(TIN2VTK TIN2VTK.cpp)
 set_target_properties(TIN2VTK PROPERTIES FOLDER Utilities)
 target_link_libraries(TIN2VTK MeshLib)
-ADD_VTK_DEPENDENCY(TIN2VTK)
 
 ####################
 ### Installation ###
diff --git a/Applications/Utils/MeshEdit/CMakeLists.txt b/Applications/Utils/MeshEdit/CMakeLists.txt
index ebda53b715190e720bfa74a91cbfae54b9553463..815743ceae33683cebddd1a7944842f11581b2bb 100644
--- a/Applications/Utils/MeshEdit/CMakeLists.txt
+++ b/Applications/Utils/MeshEdit/CMakeLists.txt
@@ -1,28 +1,23 @@
 
 add_executable(moveMeshNodes moveMeshNodes.cpp)
 target_link_libraries(moveMeshNodes MeshLib)
-ADD_VTK_DEPENDENCY(moveMeshNodes)
 set_target_properties(moveMeshNodes PROPERTIES FOLDER Utilities)
 
 add_executable(MapGeometryToMeshSurface
     MapGeometryToMeshSurface.cpp )
 target_link_libraries(MapGeometryToMeshSurface MeshGeoToolsLib MeshLib)
-ADD_VTK_DEPENDENCY(MapGeometryToMeshSurface)
 set_target_properties(MapGeometryToMeshSurface PROPERTIES FOLDER Utilities)
 
 add_executable(removeMeshElements removeMeshElements.cpp)
 target_link_libraries(removeMeshElements MeshLib)
-ADD_VTK_DEPENDENCY(removeMeshElements)
 set_target_properties(removeMeshElements PROPERTIES FOLDER Utilities)
 
 add_executable(NodeReordering NodeReordering.cpp)
 target_link_libraries(NodeReordering MeshLib)
-ADD_VTK_DEPENDENCY(NodeReordering)
 set_target_properties(NodeReordering PROPERTIES FOLDER Utilities)
 
 add_executable(MoveMesh MoveMesh.cpp)
 target_link_libraries(MoveMesh MeshLib)
-ADD_VTK_DEPENDENCY(MoveMesh)
 set_target_properties(MoveMesh PROPERTIES FOLDER Utilities)
 
 add_executable(appendLinesAlongPolyline appendLinesAlongPolyline.cpp)
@@ -31,22 +26,18 @@ target_link_libraries(appendLinesAlongPolyline
     MeshLib
     ApplicationsFileIO
 )
-ADD_VTK_DEPENDENCY(appendLinesAlongPolyline)
 set_target_properties(appendLinesAlongPolyline PROPERTIES FOLDER Utilities)
 
 add_executable(editMaterialID editMaterialID.cpp)
 target_link_libraries(editMaterialID MeshLib)
-ADD_VTK_DEPENDENCY(editMaterialID)
 set_target_properties(editMaterialID PROPERTIES FOLDER Utilities)
 
 add_executable(checkMesh checkMesh.cpp)
 target_link_libraries(checkMesh MeshLib)
-ADD_VTK_DEPENDENCY(checkMesh)
 set_target_properties(checkMesh PROPERTIES FOLDER Utilities)
 
 add_executable(reviseMesh reviseMesh.cpp)
 target_link_libraries (reviseMesh MeshLib)
-ADD_VTK_DEPENDENCY(reviseMesh)
 set_target_properties(reviseMesh PROPERTIES FOLDER Utilities)
 
 add_executable(ResetPropertiesInPolygonalRegion
@@ -76,7 +67,6 @@ target_link_libraries(CreateBoundaryConditionsAlongPolylines
     MeshLib
     ApplicationsFileIO
 )
-ADD_VTK_DEPENDENCY(CreateBoundaryConditionsAlongPolylines)
 set_target_properties(CreateBoundaryConditionsAlongPolylines
     PROPERTIES FOLDER Utilities)
 
diff --git a/Applications/Utils/ModelPreparation/PartitionMesh/CMakeLists.txt b/Applications/Utils/ModelPreparation/PartitionMesh/CMakeLists.txt
index 9ea8124236c585530c956a470d9759378623efc9..b331c0db9310b76826aa4d367fc56874c190a6c5 100644
--- a/Applications/Utils/ModelPreparation/PartitionMesh/CMakeLists.txt
+++ b/Applications/Utils/ModelPreparation/PartitionMesh/CMakeLists.txt
@@ -1,7 +1,6 @@
 add_executable(partmesh PartitionMesh.cpp NodeWiseMeshPartitioner.h NodeWiseMeshPartitioner.cpp)
 set_target_properties(partmesh PROPERTIES FOLDER Utilities)
 target_link_libraries(partmesh MeshLib)
-ADD_VTK_DEPENDENCY(partmesh)
 
 ####################
 ### Installation ###
diff --git a/Applications/Utils/OGSFileConverter/CMakeLists.txt b/Applications/Utils/OGSFileConverter/CMakeLists.txt
index 3cf643d8d9e9f9a81ba1dcb3e8e3d59217913345..13c0c664e62cf035a662366a287c7f46e62d84a7 100644
--- a/Applications/Utils/OGSFileConverter/CMakeLists.txt
+++ b/Applications/Utils/OGSFileConverter/CMakeLists.txt
@@ -23,7 +23,6 @@ target_link_libraries(OGSFileConverterLib
     PUBLIC QtBase MathLib
     INTERFACE MeshLib ApplicationsFileIO
 )
-ADD_VTK_DEPENDENCY(OGSFileConverterLib)
 
 add_executable(OGSFileConverter main.cpp)
 
@@ -31,7 +30,6 @@ target_link_libraries(OGSFileConverter
     OGSFileConverterLib
     ApplicationsFileIO
 )
-ADD_VTK_DEPENDENCY(OGSFileConverter)
 
 set_property(TARGET OGSFileConverter PROPERTY FOLDER "Utilities")
 
diff --git a/Applications/Utils/PostProcessing/CMakeLists.txt b/Applications/Utils/PostProcessing/CMakeLists.txt
index 14d07062440e3ae46756e867026cf02ea55af32d..f93930ff17929979648c268678cc767c1a807518 100644
--- a/Applications/Utils/PostProcessing/CMakeLists.txt
+++ b/Applications/Utils/PostProcessing/CMakeLists.txt
@@ -1,7 +1,6 @@
 
 add_executable(postLIE postLIE.cpp)
 target_link_libraries(postLIE MeshLib ProcessLib)
-ADD_VTK_DEPENDENCY(postLIE)
 set_target_properties(postLIE PROPERTIES FOLDER Utilities)
 
 ####################
diff --git a/Applications/Utils/SWMMConverter/CMakeLists.txt b/Applications/Utils/SWMMConverter/CMakeLists.txt
index 3e95aef7be8ba8327dc4af201be6798dc3efc027..2e2fbb3b303f9eace1d72c866159213ce370b761 100644
--- a/Applications/Utils/SWMMConverter/CMakeLists.txt
+++ b/Applications/Utils/SWMMConverter/CMakeLists.txt
@@ -11,8 +11,6 @@ target_link_libraries(SWMMConverter
 
 include_directories( ${PROJECT_SOURCE_DIR}/Applications/FileIO )
 
-ADD_VTK_DEPENDENCY(SWMMConverter)
-
 set_target_properties(SWMMConverter PROPERTIES FOLDER Utilities)
 
 install(TARGETS SWMMConverter RUNTIME DESTINATION bin COMPONENT Utilities)
diff --git a/Applications/Utils/SimpleMeshCreation/CMakeLists.txt b/Applications/Utils/SimpleMeshCreation/CMakeLists.txt
index 9792f3b516b117488eb44b79916829e4feb7f155..52b4d62a64941b04e310218565ce92115dd00621 100644
--- a/Applications/Utils/SimpleMeshCreation/CMakeLists.txt
+++ b/Applications/Utils/SimpleMeshCreation/CMakeLists.txt
@@ -6,7 +6,6 @@ if(OGS_BUILD_GUI)
         ApplicationsFileIO
         MeshLib
     )
-    ADD_VTK_DEPENDENCY(createMeshElemPropertiesFromASCRaster)
 endif() # OGS_BUILD_GUI (VtkVis-target is existing)
 
 
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3fda3147084be7a2e4ca441c2c8536fc19a8a819..77f1e81912a5106d71cfada9e80aabf7b7172731 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -23,18 +23,22 @@ list(APPEND CMAKE_PREFIX_PATH
 option(BUILD_SHARED_LIBS "Create shared libraries?" OFF)
 set(CMAKE_LIBRARY_SEARCH_PATH "" CACHE PATH
     "Additional library installation path, e.g. /opt/local or C:/libs")
-set(OGS_CPU_ARCHITECTURE "native" CACHE STRING "Processor architecture, defaults to native (*nix) / blend (MSVC).")
+set(OGS_CPU_ARCHITECTURE "native" CACHE STRING "Processor architecture, \
+    defaults to native (*nix) / blend (MSVC).")
 option(OGS_ENABLE_AVX2 "Enable the use of AVX2 instructions" OFF)
 option(OGS_BUILD_TESTS "Should the test executables be built?" ON)
 option(OGS_USE_PCH "Should pre-compiled headers be used?" ON)
+option(OGS_USE_CONAN "Should Conan package manager be used?" OFF)
+set(OGS_CONAN_BUILD "missing" CACHE STRING "Possible values: all, missing, \
+    never or list of libs to build" )
 
 ### CMake includes ###
 include(scripts/cmake/PreFind.cmake)
-include(scripts/cmake/ConanSetup.cmake)
 include(scripts/cmake/CheckTypeSizes.cmake)
 include(scripts/cmake/Functions.cmake)
 include(scripts/cmake/SubmoduleSetup.cmake)
 include(scripts/cmake/CMakeSetup.cmake)
+include(scripts/cmake/ConanSetup.cmake)
 include(scripts/cmake/CompilerSetup.cmake)
 include(scripts/cmake/Find.cmake)
 include(scripts/cmake/CCacheSetup.cmake)
@@ -153,16 +157,12 @@ option(OGS_SYNC_SUBMODULES "Sync git submodules on CMake run. Overwrites custom
 option(OGS_DOWNLOAD_ADDITIONAL_CONTENT "Should addional content such as manuals be downloaded and packaged?" OFF)
 include(scripts/cmake/packaging/Pack.cmake)
 
-# Third-party libraries
-# Default checks for system first, then builds locally
-set(OGS_LIB_VTK "Default" CACHE STRING "Which VTK library should be used?")
-set(OGS_LIB_BOOST "Default" CACHE STRING "Which Boost library should be used?")
-set(OGS_LIB_EIGEN "Default" CACHE STRING "Which Eigen library should be used?")
-set_property(CACHE
-    OGS_LIB_VTK
-    OGS_LIB_BOOST
-    OGS_LIB_EIGEN
-    PROPERTY STRINGS "Default" "System" "Local")
+# Third-party libraries, names come from Conan package names
+set(OGS_LIBS VTK Boost Eigen3 Qt Shapelib libgeotiff CACHE INTERNAL "")
+foreach(LIB ${OGS_LIBS})
+    set(OGS_LIB_${LIB} "Default" CACHE STRING "Which ${LIB} library should be used?")
+    set_property(CACHE OGS_LIB_${LIB} PROPERTY STRINGS "Default" "System")
+endforeach(LIB)
 
 # Options controlling which FEM elements will be compiled
 set(OGS_MAX_ELEMENT_DIM   3 CACHE STRING "Maximum dimension of FEM elements to be built.")
@@ -246,19 +246,11 @@ add_definitions(-DLOGOG_LEVEL=${OGS_LOG_LEVEL})
 ######################
 
 # External projects
-include(scripts/cmake/ExternalProjectBoost.cmake)
-include(VtkModules)
 if(OGS_INSITU)
-    include(ExternalProjectCatalyst)
     include("${PARAVIEW_USE_FILE}")
     add_definitions(-DUSE_INSITU)
-else()
-    include(ExternalProjectVtk)
 endif()
 
-include_directories( SYSTEM ${Boost_INCLUDE_DIRS} )
-include(scripts/cmake/ExternalProjectEigen.cmake)
-include_directories(SYSTEM ${EIGEN3_INCLUDE_DIR})
 
 # Add subdirectories with the projects
 add_subdirectory( ThirdParty )
diff --git a/Jenkinsfile b/Jenkinsfile
index c51bbc3f72dd079d79e001017259e6d2b6e95054..d653d5d3822b8aac948c70eddcb3a9a0c0965d6f 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -1,5 +1,5 @@
 #!/usr/bin/env groovy
-@Library('jenkins-pipeline@1.0.7') _
+@Library('jenkins-pipeline@1.0.8') _
 
 def builders = [:]
 def helper = new ogs.helper()
diff --git a/MeshLib/CMakeLists.txt b/MeshLib/CMakeLists.txt
index 2440d1d7a04ad87d7eba5cba1c03736b4c1a8a49..cd2dbe180f12761cc85dbbf1bf45ddea81b71edd 100644
--- a/MeshLib/CMakeLists.txt
+++ b/MeshLib/CMakeLists.txt
@@ -36,8 +36,6 @@ if(OGS_USE_MPI)
     )
 endif()
 
-ADD_VTK_DEPENDENCY(MeshLib)
-
 if(TARGET Eigen)
     add_dependencies(MeshLib Eigen)
 endif()
diff --git a/ProcessLib/CMakeLists.txt b/ProcessLib/CMakeLists.txt
index f73380f5ba850aac7e4c504efe9028c539be0aae..aa8acef9f7287e25d49f6a699b533136a99b9d1b 100644
--- a/ProcessLib/CMakeLists.txt
+++ b/ProcessLib/CMakeLists.txt
@@ -34,8 +34,6 @@ target_link_libraries(ProcessLib
     PRIVATE MeshGeoToolsLib
 )
 
-ADD_VTK_DEPENDENCY(ProcessLib)
-
 if(TARGET Eigen)
     add_dependencies(ProcessLib Eigen)
 endif()
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index b41299ccd02d96f4680ae2412b97876d65c5a7cb..e60187fea841dcf305e915c17638f297d5d835a7 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -46,7 +46,6 @@ target_link_libraries(testrunner
     ProcessLib
     Threads::Threads
 )
-ADD_VTK_DEPENDENCY(testrunner)
 
 if(OGS_USE_PETSC)
     target_link_libraries(testrunner ${PETSC_LIBRARIES})
@@ -74,8 +73,6 @@ if(Qt5XmlPatterns_FOUND)
     endif()
 endif()
 
-ADD_VTK_DEPENDENCY(testrunner)
-
 if(OGS_USE_PCH)
     cotire(testrunner)
 endif()
diff --git a/ThirdParty/cmake-modules b/ThirdParty/cmake-modules
index 8382e36c3a2916bb3de96fb5b91365246e2b22a7..d95fb992313a895dfb82b8e843c1b8fdc626e797 160000
--- a/ThirdParty/cmake-modules
+++ b/ThirdParty/cmake-modules
@@ -1 +1 @@
-Subproject commit 8382e36c3a2916bb3de96fb5b91365246e2b22a7
+Subproject commit d95fb992313a895dfb82b8e843c1b8fdc626e797
diff --git a/ThirdParty/vtkdiff b/ThirdParty/vtkdiff
index b75cec4813c335bcb80f877df1019ddf12a80da1..58d9a746f8e73de256a4a2357f27960821c8fe93 160000
--- a/ThirdParty/vtkdiff
+++ b/ThirdParty/vtkdiff
@@ -1 +1 @@
-Subproject commit b75cec4813c335bcb80f877df1019ddf12a80da1
+Subproject commit 58d9a746f8e73de256a4a2357f27960821c8fe93
diff --git a/conanfile.py b/conanfile.py
deleted file mode 100644
index 422e4499aaaebd1d999e9a72d3fa9673089ebe5b..0000000000000000000000000000000000000000
--- a/conanfile.py
+++ /dev/null
@@ -1,34 +0,0 @@
-from conans import ConanFile, CMake
-
-class OpenGeoSysConan(ConanFile):
-    settings = "os", "compiler", "build_type", "arch"
-    generators = "cmake"
-
-    options = {"gui": [True, False]}
-    default_options = \
-        "gui=False", \
-        "Boost:header_only=True", \
-        "Qt:xmlpatterns=True"
-
-    def requirements(self):
-        self.requires("Boost/[>=1.56.0]@lasote/stable")
-        self.requires("Eigen3/3.2.9@bilke/stable")
-        self.requires("VTK/[>=7.1]@bilke/stable")
-
-        if self.options.gui:
-            self.requires("Shapelib/1.3.0@bilke/stable")
-            self.requires("libgeotiff/1.4.2@bilke/stable")
-            self.requires("Qt/5.6.2@bilke/testing")
-
-    def imports(self):
-        self.copy(pattern="*.dll", dst="bin", src="bin")
-        self.copy(pattern="*.dylib*", dst="bin", src="lib")
-        self.copy(pattern="*.so*", dst="bin", src="lib")
-        self.copy(pattern="*.framework*", dst="bin", src="lib")
-        self.copy(pattern="*.dll", dst="bin/platforms", src="plugins/platforms")
-        self.copy(pattern="*.dylib*", dst="bin/platforms", src="plugins/platforms")
-
-    def build(self):
-        cmake = CMake(self.settings)
-        self.run('cmake "%s" %s' % (self.conanfile_directory, cmake.command_line))
-        self.run('cmake --build . %s' % cmake.build_config)
diff --git a/scripts/cmake/AddVtkDependency.cmake b/scripts/cmake/AddVtkDependency.cmake
deleted file mode 100644
index 29677ca931ca5eae6732b85a4e280a27645cac44..0000000000000000000000000000000000000000
--- a/scripts/cmake/AddVtkDependency.cmake
+++ /dev/null
@@ -1,14 +0,0 @@
-macro(ADD_VTK_DEPENDENCY target)
-    if(ParaView_FOUND)
-        include("${PARAVIEW_USE_FILE}")
-
-        # see http://stackoverflow.com/questions/18642155
-        set_property(TARGET ${target} APPEND PROPERTY COMPILE_DEFINITIONS ${VTK_DEFINITIONS})
-    elseif(VTK_FOUND)
-        include( ${VTK_USE_FILE} )
-    endif()
-
-    if(TARGET VtkRescan)
-        add_dependencies(${target} VtkRescan)
-    endif()
-endmacro()
diff --git a/scripts/cmake/CMakeSetup.cmake b/scripts/cmake/CMakeSetup.cmake
index 8423dec0d92d1c2ce29daf0f74b773e797216b4c..87dcfe20d493e5e4d7915fee8c3ed86ac9358800 100644
--- a/scripts/cmake/CMakeSetup.cmake
+++ b/scripts/cmake/CMakeSetup.cmake
@@ -7,7 +7,6 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
 include(UseBackportedModules)
 include(OptionRequires)
 include(CppcheckTargets)
-include(AddVtkDependency)
 
 include(ProcessorCount)
 ProcessorCount(NUM_PROCESSORS)
@@ -22,7 +21,8 @@ endif()
 if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
     message(STATUS "Setting build type to 'Debug' as none was specified.")
     set(CMAKE_BUILD_TYPE Debug CACHE STRING "Choose the type of build." FORCE)
-    set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
+    set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
+        "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
 endif()
 
 # Get the hostname
diff --git a/scripts/cmake/CompilerSetup.cmake b/scripts/cmake/CompilerSetup.cmake
index 293ececc1c77319f2958f922e7b1f8cfe41ee5aa..033250f54042b30ddac57289edf682ca7164eb72 100644
--- a/scripts/cmake/CompilerSetup.cmake
+++ b/scripts/cmake/CompilerSetup.cmake
@@ -49,30 +49,38 @@ endif()
 ### GNU C/CXX compiler
 if(COMPILER_IS_GCC)
     if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.9")
-        message(FATAL_ERROR "GCC minimum required version is 4.9! You are using ${CMAKE_CXX_COMPILER_VERSION}.")
+        message(FATAL_ERROR "GCC minimum required version is 4.9! You are \
+            using ${CMAKE_CXX_COMPILER_VERSION}.")
     endif()
     if(NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
         message(STATUS "Set GCC release flags")
         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -DNDEBUG")
     else()
         # Enable assertions in STL in debug mode.
-        if (NOT STL_NO_DEBUG)
-            set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_ASSERT -D_GLIBCXX_DEBUG_PEDASSERT -D_GLIBCXX_DEBUG_VERIFY")
+        if(NOT STL_NO_DEBUG)
+            set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} \
+                -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_ASSERT \
+                -D_GLIBCXX_DEBUG_PEDASSERT -D_GLIBCXX_DEBUG_VERIFY")
         endif()
     endif()
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CPU_FLAGS} -Wno-deprecated -Wall -Wextra -fext-numeric-literals")
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CPU_FLAGS} -Wno-deprecated -Wall \
+        -Wextra -fext-numeric-literals")
 endif() # COMPILER_IS_GCC
 
 ### Clang
 if(COMPILER_IS_CLANG)
     if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "3.5")
-        message(FATAL_ERROR "Aborting: Clang 3.5 is required! Found version ${CMAKE_CXX_COMPILER_VERSION}")
+        message(FATAL_ERROR "Aborting: Clang 3.5 is required! Found version \
+            ${CMAKE_CXX_COMPILER_VERSION}")
     endif()
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CPU_FLAGS} -Wall -Wno-c++98-compat-pedantic")
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CPU_FLAGS} -Wall \
+        -Wno-c++98-compat-pedantic")
     if(CMAKE_BUILD_TYPE STREQUAL "Debug")
         # Enable assertions in STL in debug mode.
-        if (NOT STL_NO_DEBUG)
-            set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_ASSERT -D_GLIBCXX_DEBUG_PEDASSERT -D_GLIBCXX_DEBUG_VERIFY")
+        if(NOT STL_NO_DEBUG)
+            set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} \
+                -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_ASSERT \
+                -D_GLIBCXX_DEBUG_PEDASSERT -D_GLIBCXX_DEBUG_VERIFY")
         endif()
     endif()
 
@@ -91,20 +99,22 @@ endif() # COMPILER_IS_INTEL
 # Profiling
 if(OGS_PROFILE)
     if(NOT CMAKE_BUILD_TYPE STREQUAL "Release")
-        message(STATUS "When using profiling you should set CMAKE_BUILD_TYPE to Release.")
+        message(STATUS "When using profiling you should set CMAKE_BUILD_TYPE \
+            to Release.")
     endif()
     set(PROFILE_FLAGS "-pg -fno-omit-frame-pointer -O2 -DNDEBUG")
     # clang compiler does not know the following flags
     if(NOT COMPILER_IS_CLANG)
-        set(PROFILE_FLAGS "${PROFILE_FLAGS} -fno-inline-functions-called-once -fno-optimize-sibling-calls")
+        set(PROFILE_FLAGS "${PROFILE_FLAGS} -fno-inline-functions-called-once \
+            -fno-optimize-sibling-calls")
     endif()
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PROFILE_FLAGS}")
-endif ()
+endif()
 
 ### Windows
-if (WIN32)
+if(WIN32)
     ## For Visual Studio compiler
-    if (MSVC)
+    if(MSVC)
         if(OGS_CPU_ARCHITECTURE STREQUAL "native")
             set(CPU_FLAGS "/favor:blend")
         else()
@@ -118,13 +128,15 @@ if (WIN32)
             -D_CRT_NONSTDC_NO_WARNINGS
             -D_CRT_XNONSTDC_NO_WARNINGS
             -D__restrict__=__restrict   # this fixes #5
-            -DNOMINMAX # This fixes compile errors with std::numeric_limits<T>::min() / max()
+            # This fixes compile errors with
+            # std::numeric_limits<T>::min() / max()
+            -DNOMINMAX
         )
         # Sets warning level 3 and ignores some warnings
-        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CPU_FLAGS} /W3 /wd4290 /wd4267 /wd4996")
-        # Allow big object files generated for template heavy code
-        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj")
-        set(CMAKE_CXX_FLAGS_RELWITHDEBINFO  "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /ZI /Od /Ob0")
+        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CPU_FLAGS} /W3 /wd4290 \
+            /wd4267 /wd4996 /bigobj")
+        set(CMAKE_CXX_FLAGS_RELWITHDEBINFO  "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} \
+            /ZI /Od /Ob0")
 
         DisableCompilerFlag(DEBUG /RTC1)
     # cygwin
@@ -135,7 +147,7 @@ if (WIN32)
             message(STATUS "Might be GCC under cygwin.")
         endif()
     endif()
-endif ()
+endif()
 
 # Missing OpenMP 3.0 implementation fix for Windows, this fixes #6
 if(MSVC)
diff --git a/scripts/cmake/ConanSetup.cmake b/scripts/cmake/ConanSetup.cmake
index 914b14e37f6f0f28eb44d7b389c3fb9f4bad9896..0f9e01048fec14b39ddae008303cbce80b9416ee 100644
--- a/scripts/cmake/ConanSetup.cmake
+++ b/scripts/cmake/ConanSetup.cmake
@@ -1,25 +1,96 @@
-if($ENV{CONAN_INSTALL})
-    find_program(CONAN_TOOL_PATH conan)
-    if(CONAN_TOOL_PATH)
-        execute_process(
-            COMMAND ${CONAN_TOOL_PATH} install -u ${PROJECT_SOURCE_DIR}
-            WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
-        )
+if(NOT OGS_USE_CONAN)
+    return()
+endif()
+
+if(DEFINED OGS_LIB_Boost)
+    if(${OGS_LIB_Boost} STREQUAL "Default")
+        cmake_minimum_required(VERSION 3.4) # Conan Boost package requires this
     endif()
 endif()
-set(USE_CONAN false CACHE INTERNAL "")
-if(EXISTS ${PROJECT_BINARY_DIR}/conanbuildinfo.cmake)
-    include(${PROJECT_BINARY_DIR}/conanbuildinfo.cmake)
-    set(USE_CONAN true)
-elseif(EXISTS ${PROJECT_SOURCE_DIR}/conanbuildinfo.cmake)
-    include(${PROJECT_SOURCE_DIR}/conanbuildinfo.cmake)
-    set(USE_CONAN true)
-endif()
-if(USE_CONAN)
-    cmake_minimum_required(VERSION 3.4) # Conan Boost package requires this
-    set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/scripts/cmake/conan ${CONAN_CMAKE_MODULE_PATH} ${CMAKE_MODULE_PATH})
-    message(STATUS "Using conan package manager")
-    set(OGS_LIB_VTK System CACHE INTERNAL "")
-    set(OGS_LIB_BOOST System CACHE INTERNAL "")
-    set(OGS_LIB_EIGEN System CACHE INTERNAL "")
+
+include(${PROJECT_SOURCE_DIR}/scripts/cmake/conan/conan.cmake)
+
+set(CONAN_REQUIRES
+    Boost/1.64.0@conan/stable
+    Eigen3/3.2.9@bilke/stable
+    VTK/[>=7.1]@bilke/stable
+    CACHE INTERNAL ""
+)
+
+set(CONAN_OPTIONS
+    Boost:header_only=True
+    Qt:xmlpatterns=True
+    CACHE INTERNAL ""
+)
+
+if(LINUX AND BUILD_SHARED_LIBS)
+    set(CONAN_OPTIONS ${CONAN_OPTIONS} VTK:fPIC=True)
+endif()
+
+if(OGS_BUILD_GUI)
+    set(CONAN_REQUIRES ${CONAN_REQUIRES}
+        Shapelib/1.3.0@bilke/stable
+        libgeotiff/1.4.2@bilke/stable
+        Qt/5.6.2@bilke/testing
+    )
+endif()
+
+# Find Conan and do version check
+find_program(CONAN_CMD conan)
+if(NOT CONAN_CMD)
+    message(FATAL_ERROR "Conan executable not found!")
+endif()
+execute_process(COMMAND ${CONAN_CMD} --version
+    OUTPUT_VARIABLE CONAN_VERSION_OUTPUT)
+# Strip 'Conan version' & newline
+string(SUBSTRING ${CONAN_VERSION_OUTPUT} 14 -1 CONAN_VERSION)
+string(STRIP ${CONAN_VERSION} CONAN_VERSION)
+set(CONAN_VERSION_REQUIRED 0.26.0)
+if(${CONAN_VERSION} VERSION_LESS ${CONAN_VERSION_REQUIRED})
+    message(FATAL_ERROR "Conan outdated. Installed: ${CONAN_VERSION}, \
+        required: ${CONAN_VERSION_REQUIRED}. Consider updating via 'pip \
+        install conan --upgrade'.")
 endif()
+
+execute_process(COMMAND ${CONAN_CMD} remote list OUTPUT_VARIABLE CONAN_REMOTES)
+
+# Add ogs remote
+if("${CONAN_REMOTES}" MATCHES "ogs: https://ogs.jfrog.io/ogs/api/conan/conan")
+    # Make sure ogs repo is first
+    execute_process(COMMAND ${CONAN_CMD} remote update -i 0 ogs
+        https://ogs.jfrog.io/ogs/api/conan/conan)
+else()
+    # Add ogs repo as first
+    message(STATUS "Conan adding ogs remote repositoy \
+        (https://api.bintray.com/conan/ogs/conan)")
+    execute_process(COMMAND ${CONAN_CMD} remote add -i 0 ogs
+        https://ogs.jfrog.io/ogs/api/conan/conan)
+endif()
+
+# Add conan-community remote
+if("${CONAN_REMOTES}" MATCHES "conan-community: \
+    https://api.bintray.com/conan/conan-community/conan")
+    execute_process(COMMAND ${CONAN_CMD} remote update -i 2 conan-community
+        https://api.bintray.com/conan/conan-community/conan)
+else()
+    message(STATUS "Conan adding community remote repositoy \
+        (https://api.bintray.com/conan/conan-community/conan)")
+    execute_process(COMMAND ${CONAN_CMD} remote add -i 2 conan-community
+        https://api.bintray.com/conan/conan-community/conan)
+endif()
+
+# Remove libraries from Conan which are set to "System"
+message(STATUS "Third-party libraries:")
+foreach(LIB ${OGS_LIBS})
+    message("  - OGS_LIB_${LIB} = ${OGS_LIB_${LIB}}")
+    if("${OGS_LIB_${LIB}}" STREQUAL System)
+        list(FILTER CONAN_REQUIRES EXCLUDE REGEX ${LIB})
+    endif()
+endforeach()
+
+conan_cmake_run(REQUIRES ${CONAN_REQUIRES}
+                OPTIONS ${CONAN_OPTIONS}
+                BASIC_SETUP
+                UPDATE
+                BUILD ${OGS_CONAN_BUILD}
+)
diff --git a/scripts/cmake/ExternalProjectBoost.cmake b/scripts/cmake/ExternalProjectBoost.cmake
deleted file mode 100644
index ab16c24eb199f2ca238277f51a0e805c2e591163..0000000000000000000000000000000000000000
--- a/scripts/cmake/ExternalProjectBoost.cmake
+++ /dev/null
@@ -1,59 +0,0 @@
-if(USE_CONAN)
-    SET(BOOST_HEADER_ONLY TRUE)
-    find_package(Boost REQUIRED)
-    include_directories(SYSTEM ${CONAN_INCLUDE_DIRS_BOOST})
-    link_directories(${Boost_LIBRARY_DIR})
-    return()
-endif()
-include(ThirdPartyLibVersions)
-include(ExternalProject)
-
-if(Boost_FOUND)
-    return()
-endif()
-
-if(NOT DEFINED BOOST_ROOT AND DEFINED ENV{BOOST_ROOT})
-    set(BOOST_ROOT $ENV{BOOST_ROOT} CACHE PATH "")
-endif()
-
-# First check for system boost
-if(NOT Boost_INCLUDE_DIRS)
-    if(APPLE)
-        set(BOOST_ROOT $ENV{HOMEBREW_ROOT})
-    endif()
-    if(WIN32 AND COMPILER_IS_GCC)
-        set(BOOST_INCLUDEDIR "$ENV{CMAKE_LIBRARY_SEARCH_PATH}/include/boost*")
-    endif()
-    if(OGS_LIB_BOOST STREQUAL "System")
-        find_package(Boost ${OGS_BOOST_VERSION} REQUIRED)
-        if(NOT Boost_FOUND)
-            message(FATAL_ERROR "Aborting CMake because system Boost was not found!")
-        endif()
-    elseif(OGS_LIB_BOOST STREQUAL "Default")
-        find_package(Boost ${OGS_BOOST_VERSION})
-    endif()
-    if(Boost_FOUND)
-        set(Boost_FOUND TRUE CACHE BOOL "Was Boost found?" FORCE)
-        set(Boost_INCLUDE_DIRS "${Boost_INCLUDE_DIRS}" CACHE STRING "Boost include dirs" FORCE)
-        return()
-    else()
-        set(Boost_INCLUDE_DIRS "")
-    endif()
-endif()
-
-ExternalProject_Add(Boost
-    PREFIX ${PROJECT_BINARY_DIR}/External/boost
-    URL ${OGS_BOOST_URL}
-    URL_MD5 ${OGS_BOOST_MD5}
-    UPDATE_COMMAND ""
-    CONFIGURE_COMMAND ""
-    BUILD_COMMAND ""
-    BUILD_IN_SOURCE 1
-    INSTALL_COMMAND ""
-)
-ExternalProject_Get_Property( Boost source_dir )
-
-if(NOT Boost_INCLUDE_DIRS)
-    set( Boost_INCLUDE_DIRS ${source_dir} CACHE INTERNAL "Boost include directories")
-    message(STATUS "Downloading Boost ${OGS_BOOST_VERSION} automatically.")
-endif()
diff --git a/scripts/cmake/ExternalProjectCatalyst.cmake b/scripts/cmake/ExternalProjectCatalyst.cmake
deleted file mode 100644
index 9d3752dec88fc39739420d37ad056ddb51045fde..0000000000000000000000000000000000000000
--- a/scripts/cmake/ExternalProjectCatalyst.cmake
+++ /dev/null
@@ -1,71 +0,0 @@
-include(ThirdPartyLibVersions)
-include(ExternalProject)
-
-set(CATALYST_GIT_URL https://github.com/ufz/catalyst-io.git)
-
-if(NOT DEFINED ParaView_DIR AND DEFINED ENV{ParaView_DIR})
-    set(ParaView_DIR $ENV{ParaView_DIR})
-endif()
-
-set(VTK_LIBRARIES ${VTK_MODULES} CACHE STRING "" FORCE)
-if(OGS_BUILD_GUI)
-    # Replace vtknetcdf with vtkNetCDF vtkNetCDF_cxx
-    list(REMOVE_ITEM VTK_LIBRARIES vtknetcdf)
-    list(APPEND VTK_LIBRARIES vtkNetCDF vtkNetCDF_cxx)
-endif()
-
-find_package(ParaView 4.2 REQUIRED COMPONENTS ${VTK_MODULES})
-
-if(ParaView_FOUND)
-    foreach(DIR ${PARAVIEW_INCLUDE_DIRS})
-        if("${DIR}" MATCHES ".*vtknetcdf.*")
-            include_directories(SYSTEM ${DIR}/../cxx ${DIR}/include)
-        endif()
-    endforeach()
-    message(STATUS "Using ParaView in ${ParaView_DIR}")
-    return()
-elseif()
-        # If nothing was found build ParaView as an external project
-        set(ParaView_DIR ${PROJECT_BINARY_DIR}/External/catalyst/src/Catalyst-build CACHE PATH "" FORCE)
-    endif()
-endif()
-
-set(CATALYST_CMAKE_GENERATOR ${CMAKE_GENERATOR})
-if(WIN32)
-    # Ninja temporary disabled because it builds only the Release mode.
-    # find_program(NINJA_TOOL_PATH ninja DOC "Ninja build tool")
-    if(NINJA_TOOL_PATH)
-        set(CATALYST_CMAKE_GENERATOR Ninja)
-        set(CATALYST_MAKE_COMMAND ninja ${VTK_LIBRARIES})
-    else()
-        set(CATALYST_MAKE_COMMAND
-            msbuild /p:Configuration=Release /m:${NUM_PROCESSORS} ParaView.sln &&
-            msbuild /p:Configuration=Debug /m:${NUM_PROCESSORS} /m ParaView.sln)
-    endif()
-    set(CATALYST_CONFIGURE_COMMAND cmake.bat)
-else()
-    if($ENV{CI})
-        set(CATALYST_MAKE_COMMAND make ${VTK_LIBRARIES})
-    else()
-        set(CATALYST_MAKE_COMMAND make -j ${NUM_PROCESSORS} ${VTK_LIBRARIES})
-    endif()
-    set(CATALYST_CONFIGURE_COMMAND cmake.sh)
-endif()
-
-message(STATUS "Building ParaView as an external project in the build directory")
-
-ExternalProject_Add(Catalyst
-    PREFIX ${PROJECT_BINARY_DIR}/External/catalyst
-    GIT_REPOSITORY ${CATALYST_GIT_URL}
-    CONFIGURE_COMMAND ../Catalyst/${CATALYST_CONFIGURE_COMMAND} -G ${CATALYST_CMAKE_GENERATOR}
-        -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} ../Catalyst
-    BUILD_COMMAND ${CATALYST_MAKE_COMMAND}
-    INSTALL_COMMAND ""
-)
-
-if(NOT ParaView_FOUND)
-    # Rerun cmake in initial build
-    add_custom_target(VtkRescan ${CMAKE_COMMAND} ${PROJECT_SOURCE_DIR} DEPENDS Catalyst)
-else()
-    add_custom_target(VtkRescan) # dummy target for caching
-endif()
diff --git a/scripts/cmake/ExternalProjectEigen.cmake b/scripts/cmake/ExternalProjectEigen.cmake
deleted file mode 100644
index 036d235ff38613b890b5cc9af4c3c7544edd3dae..0000000000000000000000000000000000000000
--- a/scripts/cmake/ExternalProjectEigen.cmake
+++ /dev/null
@@ -1,49 +0,0 @@
-if(USE_CONAN)
-    find_package(Eigen3 REQUIRED)
-    include_directories(SYSTEM ${CONAN_INCLUDE_DIRS_EIGEN3})
-    return()
-endif()
-
-if(OGS_LIB_EIGEN STREQUAL "System")
-    find_package(Eigen3 3.2.9 REQUIRED)
-    if(NOT EIGEN3_FOUND)
-        message(FATAL_ERROR "Aborting CMake because system Eigen was not found!")
-    endif()
-elseif(OGS_LIB_EIGEN STREQUAL "Default")
-    find_package(Eigen3 3.2.9)
-endif()
-
-# First check for system Eigen
-if(NOT EIGEN3_INCLUDE_DIR)
-    if(EIGEN3_FOUND)
-        set(EIGEN3_FOUND TRUE CACHE BOOL "Was Eigen found?" FORCE)
-        set(EIGEN3_INCLUDE_DIR "${EIGEN3_INCLUDE_DIR}" CACHE STRING "Eigen include dir" FORCE)
-        return()
-    else()
-        set(EIGEN3_INCLUDE_DIR "")
-    endif()
-endif()
-
-if(EIGEN3_FOUND)
-    return()
-endif()
-
-include(ThirdPartyLibVersions)
-include(ExternalProject)
-ExternalProject_Add(Eigen
-    PREFIX ${PROJECT_BINARY_DIR}/External/eigen
-    URL ${OGS_EIGEN_URL}
-    URL_MD5 ${OGS_EIGEN_MD5}
-    UPDATE_COMMAND ""
-    CONFIGURE_COMMAND ""
-    BUILD_COMMAND ""
-    BUILD_IN_SOURCE 1
-    INSTALL_COMMAND ""
-)
-
-ExternalProject_Get_Property( Eigen source_dir )
-
-if(NOT EIGEN3_INCLUDE_DIR)
-    set( EIGEN3_INCLUDE_DIR ${source_dir} CACHE INTERNAL "Eigen include dir" FORCE)
-    message(STATUS "Downloading Eigen automatically.")
-endif()
diff --git a/scripts/cmake/ExternalProjectVtk.cmake b/scripts/cmake/ExternalProjectVtk.cmake
deleted file mode 100644
index a6ed46a8e598d8dccffcd7ce28d3b8bd4194a083..0000000000000000000000000000000000000000
--- a/scripts/cmake/ExternalProjectVtk.cmake
+++ /dev/null
@@ -1,81 +0,0 @@
-if(USE_CONAN)
-    find_package(VTK REQUIRED)
-    include(${VTK_USE_FILE})
-    include_directories(SYSTEM ${CONAN_INCLUDE_DIRS_VTK})
-    return()
-endif()
-include(ThirdPartyLibVersions)
-include(ExternalProject)
-
-if(NOT DEFINED VTK_DIR AND DEFINED ENV{VTK_DIR})
-    set(VTK_DIR $ENV{VTK_DIR})
-endif()
-
-set(VTK_LIBRARIES ${VTK_MODULES} CACHE STRING "" FORCE)
-if(OGS_BUILD_GUI)
-    # Replace vtknetcdf with vtkNetCDF vtkNetCDF_cxx
-    list(REMOVE_ITEM VTK_LIBRARIES vtknetcdf)
-    list(APPEND VTK_LIBRARIES vtkNetCDF vtkNetCDF_cxx)
-endif()
-
-if(OGS_LIB_VTK STREQUAL "System")
-    find_package(VTK COMPONENTS ${VTK_MODULES} NO_MODULE REQUIRED)
-    if(NOT VTK_FOUND)
-        message(FATAL_ERROR "Aborting CMake because system VTK was not found!")
-    endif()
-elseif(OGS_LIB_VTK STREQUAL "Default" OR DEFINED VTK_DIR)
-    find_package(VTK COMPONENTS ${VTK_MODULES} NO_MODULE QUIET)
-endif()
-
-if(VTK_FOUND)
-    if(VTK_VERSION VERSION_LESS ${OGS_VTK_VERSION})
-        message(FATAL_ERROR "Aborting CMake because VTK ${VTK_VERSION} is too old! (required: ${OGS_VTK_VERSION})")
-    endif()
-    message(STATUS "Using VTK ${VTK_VERSION} in ${VTK_DIR}")
-    foreach(DIR ${VTK_INCLUDE_DIRS})
-            if("${DIR}" MATCHES ".*vtknetcdf.*")
-                include_directories(SYSTEM ${DIR}/../cxx ${DIR}/include)
-            elseif("${DIR}" MATCHES ".*vtk.*")
-                include_directories(SYSTEM ${DIR}/vtknetcdf/include)
-            endif()
-        endforeach()
-        include_directories(SYSTEM ${VTK_DIR}/../ThirdParty/netcdf/vtknetcdf/cxx)
-    return()
-endif()
-set(VTK_DIR ${PROJECT_BINARY_DIR}/External/vtk/src/vtk-build CACHE PATH "" FORCE)
-
-message(STATUS "Building VTK as an external project in the build directory")
-
-if(WIN32)
-    set(VTK_MAKE_COMMAND
-        msbuild /p:Configuration=Release /m:${NUM_PROCESSORS} VTK.sln &&
-        msbuild /p:Configuration=Debug /m:${NUM_PROCESSORS} /m VTK.sln)
-else()
-    if($ENV{CI})
-        set(VTK_MAKE_COMMAND make)
-    else()
-        set(VTK_MAKE_COMMAND make -j ${NUM_PROCESSORS})
-    endif()
-endif()
-
-# Enable just the modules we selected
-set(VTK_CMAKE_ARGS -DVTK_Group_StandAlone:bool=off -DVTK_Group_Rendering:bool=off)
-foreach(arg ${VTK_MODULES})
-    list(APPEND VTK_CMAKE_ARGS -DModule_${arg}:bool=on)
-endforeach()
-
-ExternalProject_Add(vtk
-    PREFIX ${PROJECT_BINARY_DIR}/External/vtk
-    URL ${OGS_VTK_URL}
-    CMAKE_ARGS -Wno-dev
-    CMAKE_CACHE_ARGS ${VTK_CMAKE_ARGS}
-    BUILD_COMMAND ${VTK_MAKE_COMMAND}
-    INSTALL_COMMAND ""
-)
-
-if(NOT VTK_FOUND)
-    # Rerun cmake in initial build
-    add_custom_target(VtkRescan ${CMAKE_COMMAND} ${PROJECT_SOURCE_DIR} DEPENDS vtk)
-else()
-    add_custom_target(VtkRescan) # dummy target for caching
-endif()
diff --git a/scripts/cmake/Find.cmake b/scripts/cmake/Find.cmake
index 66e5e468ee129aa52786c2fd88384d88f7751f54..2213ff86bcd9112a65315f5a56caba4bbf3f47b9 100644
--- a/scripts/cmake/Find.cmake
+++ b/scripts/cmake/Find.cmake
@@ -4,7 +4,8 @@
 
 # Find doxygen
 if(WIN32)
-    find_program(DOXYGEN_DOT_EXECUTABLE NAMES dot PATHS "$ENV{ProgramFiles}/Graphviz*/bin")
+    find_program(DOXYGEN_DOT_EXECUTABLE NAMES dot
+        PATHS "$ENV{ProgramFiles}/Graphviz*/bin")
     find_package(Doxygen QUIET)
     if(DOXYGEN_DOT_PATH)
         file(TO_NATIVE_PATH ${DOXYGEN_DOT_PATH} DOXYGEN_DOT_PATH)
@@ -60,6 +61,25 @@ find_program(MODULE_CMD modulecmd
 ######################
 ### Find libraries ###
 ######################
+find_package(Boost REQUIRED)
+include_directories(SYSTEM ${Boost_INCLUDE_DIRS})
+
+include(VtkModules)
+find_package(VTK COMPONENTS ${VTK_MODULES} REQUIRED)
+include(${VTK_USE_FILE})
+if(NOT OGS_USE_CONAN)
+    foreach(DIR ${VTK_INCLUDE_DIRS})
+        if("${DIR}" MATCHES ".*vtknetcdf.*")
+            include_directories(SYSTEM ${DIR}/../cxx ${DIR}/include)
+        elseif("${DIR}" MATCHES ".*vtk.*")
+            include_directories(SYSTEM ${DIR}/vtknetcdf/include)
+        endif()
+    endforeach()
+    include_directories(SYSTEM ${VTK_DIR}/../ThirdParty/netcdf/vtknetcdf/cxx)
+endif()
+
+find_package(Eigen3 REQUIRED)
+include_directories(SYSTEM ${EIGEN3_INCLUDE_DIR})
 
 ## pthread, is a requirement of logog ##
 if(CMAKE_CROSSCOMPILING)
@@ -92,7 +112,7 @@ if(OGS_BUILD_GUI)
     if(USE_CONAN)
       set(Qt5_DIR ${CONAN_QT_ROOT}/lib/cmake/Qt5)
     endif()
-    find_package( Qt5 5.2 REQUIRED Gui Widgets Xml XmlPatterns)
+    find_package(Qt5 5.2 REQUIRED Gui Widgets Xml XmlPatterns)
     cmake_policy(SET CMP0020 NEW)
     set(CMAKE_AUTOMOC TRUE)
     set(CMAKE_AUTOUIC TRUE)
@@ -129,10 +149,11 @@ endif()
 if(OGS_USE_PETSC)
     message(STATUS "Configuring for PETSc")
 
-    option(FORCE_PETSC_EXECUTABLE_RUNS "Force CMake to accept a given PETSc configuration" ON)
+    option(FORCE_PETSC_EXECUTABLE_RUNS
+        "Force CMake to accept a given PETSc configuration" ON)
 
-    ##Force CMake to accept a given PETSc configuration in case the failure of MPI tests
-    ##This may cause the compilation broken.
+    # Force CMake to accept a given PETSc configuration in case the failure of
+    # MPI tests. This may cause the compilation broken.
     if(FORCE_PETSC_EXECUTABLE_RUNS)
         set(PETSC_EXECUTABLE_RUNS YES)
     endif()
diff --git a/scripts/cmake/InstallThirdPartyLibs.cmake b/scripts/cmake/InstallThirdPartyLibs.cmake
deleted file mode 100644
index 69653d5f15c3fbea8b82863ee5b99eb75b81c39c..0000000000000000000000000000000000000000
--- a/scripts/cmake/InstallThirdPartyLibs.cmake
+++ /dev/null
@@ -1,125 +0,0 @@
-# - Install third-party libraries system-wide (intended for Windows)
-#
-# 2014-02-25, Lars Bilke
-#
-# Currently this will build:
-#   Eigen, VTK, GeoTiff
-#
-# Usage:
-#   Run this from wherever you want, it will create a tmp-directory, builds all
-#   libraries in it and installs them at the given INSTALL_PREFIX location. The
-#   tmp directory is deleted after finishing. Make sure to also pass your
-#   GENERATOR.
-#
-#     cmake -DINSTALL_PREFIX=C:/libs -DGENERATOR="Visual Studio 12 Win64" \
-#       -P path_to_ogs_source/scripts/cmake/InstallThirdPartyLibs.cmake
-#
-# Supported Generators:
-#   - Visual Studio 11
-#   - Visual Studio 11 Win64
-#   - Visual Studio 12
-#   - Visual Studio 12 Win64
-#   - Unix Makefiles
-#
-
-# Argument checking
-if(NOT INSTALL_PREFIX OR NOT GENERATOR)
-    message(FATAL_ERROR "You need to specify an INSTALL_PREFIX and a GENERATOR: cmake -DINSTALL_PREFIX=C:/libs -DGENERATOR=\"Visual Studio 11 Win64\" -P ${CMAKE_CURRENT_LIST_DIR}/InstallThirdPartyLibs.cmake")
-endif()
-file(TO_CMAKE_PATH ${INSTALL_PREFIX} INSTALL_PREFIX)
-file(MAKE_DIRECTORY ${INSTALL_PREFIX})
-if(NOT IS_DIRECTORY ${INSTALL_PREFIX})
-    message(FATAL_ERROR "Directory ${INSTALL_PREFIX} is not writable!")
-endif()
-if(NOT ${GENERATOR} STREQUAL "Visual Studio 11" AND
-   NOT ${GENERATOR} STREQUAL "Visual Studio 11 Win64" AND
-   NOT ${GENERATOR} STREQUAL "Visual Studio 12" AND
-   NOT ${GENERATOR} STREQUAL "Visual Studio 12 Win64" AND
-   NOT ${GENERATOR} STREQUAL "Unix Makefiles")
-    message(FATAL_ERROR "Make sure to specify a supported GENERATOR!")
-endif()
-
-# CMake setup
-set(CMAKE_PREFIX_PATH ${INSTALL_PREFIX})
-set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
-    "${CMAKE_CURRENT_LIST_DIR}/cmake"
-    "${CMAKE_CURRENT_LIST_DIR}")
-include(ThirdPartyLibVersions)
-
-include(ProcessorCount)
-ProcessorCount(NUM_PROCESSORS)
-set(MAKE_PARALLEL_ARGS "")
-if(NOT WIN32 AND NOT NUM_PROCESSORS EQUAL 0)
-    set(MAKE_PARALLEL_ARGS "--" "-j${NUM_PROCESSORS}")
-endif()
-
-set(VISUAL_STUDIO_PARALLEL "")
-if(WIN32)
-    set(VISUAL_STUDIO_PARALLEL "-DCMAKE_CXX_FLAGS=\"/MP\"")
-endif()
-
-# Eigen
-file(DOWNLOAD ${OGS_EIGEN_URL} tmp/eigen.tar.gz
-    SHOW_PROGRESS EXPECTED_MD5 ${OGS_EIGEN_MD5})
-execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf eigen.tar.gz
-    WORKING_DIRECTORY tmp)
-file(GLOB EIGEN_SOURCE_DIR tmp/eigen-*)
-file(MAKE_DIRECTORY tmp/build-eigen)
-execute_process(COMMAND ${CMAKE_COMMAND} ${EIGEN_SOURCE_DIR} -G "${GENERATOR}" -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX}
-    WORKING_DIRECTORY tmp/build-eigen)
-execute_process(COMMAND ${CMAKE_COMMAND} --build . --config Release --target install
-    WORKING_DIRECTORY tmp/build-eigen)
-
-
-# VTK
-file(DOWNLOAD ${OGS_VTK_URL} tmp/vtk.tar.gz
-    SHOW_PROGRESS EXPECTED_MD5 ${OGS_VTK_MD5})
-execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf vtk.tar.gz
-    WORKING_DIRECTORY tmp)
-file(GLOB VTK_SOURCE_DIR tmp/VTK-*)
-file(MAKE_DIRECTORY tmp/build-vtk)
-execute_process(COMMAND ${CMAKE_COMMAND} ${VTK_SOURCE_DIR} -G "${GENERATOR}"
-    -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} -DBUILD_TESTING=OFF -DModule_vtkGUISupportQtOpenGL=ON
-    -DBUILD_SHARED_LIBS=OFF -DCMAKE_DEBUG_POSTFIX=d ${VISUAL_STUDIO_PARALLEL}
-    WORKING_DIRECTORY tmp/build-vtk)
-execute_process(COMMAND ${CMAKE_COMMAND} --build . --config Release --target install ${MAKE_PARALLEL_ARGS}
-    WORKING_DIRECTORY tmp/build-vtk)
-if(WIN32)
-    execute_process(COMMAND ${CMAKE_COMMAND} --build . --config Debug --target install
-        WORKING_DIRECTORY tmp/build-vtk)
-endif()
-
-# GeoTiff
-file(DOWNLOAD ${OGS_TIFF_URL} tmp/tiff.zip
-    SHOW_PROGRESS EXPECTED_MD5 ${OGS_TIFF_MD5})
-execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf tiff.zip
-    WORKING_DIRECTORY tmp)
-file(GLOB TIFF_SOURCE_DIR tmp/tiff-*)
-file(MAKE_DIRECTORY tmp/build-tiff)
-execute_process(COMMAND ${CMAKE_COMMAND} ${TIFF_SOURCE_DIR} -G "${GENERATOR}"
-    -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} ${VISUAL_STUDIO_PARALLEL}
-    WORKING_DIRECTORY tmp/build-tiff)
-execute_process(COMMAND ${CMAKE_COMMAND} --build . --config Release --target install ${MAKE_PARALLEL_ARGS}
-    WORKING_DIRECTORY tmp/build-tiff)
-
-file(DOWNLOAD ${OGS_GEOTIFF_URL} tmp/geotiff.zip
-    SHOW_PROGRESS EXPECTED_MD5 ${OGS_GEOTIFF_MD5})
-execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf geotiff.zip
-    WORKING_DIRECTORY tmp)
-file(GLOB GEOTIFF_SOURCE_DIR tmp/geotiff-*)
-file(MAKE_DIRECTORY tmp/build-geotiff)
-execute_process(COMMAND ${CMAKE_COMMAND} ${GEOTIFF_SOURCE_DIR} -G "${GENERATOR}"
-    -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} -DWITH_PROJ4=OFF ${VISUAL_STUDIO_PARALLEL}
-    WORKING_DIRECTORY tmp/build-geotiff)
-execute_process(COMMAND ${CMAKE_COMMAND} --build . --config Release --target install ${MAKE_PARALLEL_ARGS}
-    WORKING_DIRECTORY tmp/build-geotiff)
-
-# Cleanup
-file(REMOVE_RECURSE tmp)
-
-message(STATUS "Finished!")
-if(WIN32)
-    file(TO_NATIVE_PATH ${INSTALL_PREFIX} INSTALL_PREFIX)
-    message(STATUS "Now make sure to create an environment variable CMAKE_LIBRARY_SEARCH_PATH which points to ${INSTALL_PREFIX}!")
-    message(STATUS "Make also sure to append %CMAKE_LIBRARY_SEARCH_PATH%\\bin to your PATH environment variable!")
-endif()
diff --git a/scripts/cmake/ThirdPartyLibVersions.cmake b/scripts/cmake/ThirdPartyLibVersions.cmake
deleted file mode 100644
index 94943dbe9433d6b90f86684cf51c5f83381eff92..0000000000000000000000000000000000000000
--- a/scripts/cmake/ThirdPartyLibVersions.cmake
+++ /dev/null
@@ -1,18 +0,0 @@
-set(BASE_URL "http://ogsstorage.blob.core.windows.net/jenkins/ogs6-lib-sources")
-
-set(OGS_BOOST_VERSION 1.56.0)
-string(REPLACE "." "_" OGS_BOOST_VERSION_UNDERLINE ${OGS_BOOST_VERSION})
-set(OGS_BOOST_URL "${BASE_URL}/boost_${OGS_BOOST_VERSION_UNDERLINE}.tar.bz2")
-set(OGS_BOOST_MD5 "a744cf167b05d72335f27c88115f211d")
-
-set(OGS_EIGEN_URL "${BASE_URL}/eigen-3.2.9.tar.gz")
-set(OGS_EIGEN_MD5 "6a578dba42d1c578d531ab5b6fa3f741")
-
-set(OGS_VTK_VERSION 7.1.0)
-set(OGS_VTK_URL "${BASE_URL}/vtk-${OGS_VTK_VERSION}.tar.gz")
-set(OGS_VTK_MD5 "a7e814c1db503d896af72458c2d0228f")
-
-set(OGS_TIFF_URL "${BASE_URL}/tiff-4.0.1.zip")
-set(OGS_TIFF_MD5 "d4dc85296f790c159fc8fab443dd697c")
-set(OGS_GEOTIFF_URL "${BASE_URL}/libgeotiff-1.4.0.zip")
-set(OGS_GEOTIFF_MD5 "6f2583a0ec88eeb589f1cd326b2ed49c")
diff --git a/scripts/cmake/conan/conan.cmake b/scripts/cmake/conan/conan.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..6edbbc716863889cd4dff61f429ecedfe507dcdf
--- /dev/null
+++ b/scripts/cmake/conan/conan.cmake
@@ -0,0 +1,330 @@
+include(CMakeParseArguments)
+
+function(_get_msvc_ide_version result)
+    set(${result} "" PARENT_SCOPE)
+    if(${CMAKE_GENERATOR} STREQUAL "Ninja")
+        string(REGEX MATCHALL "[0-9]+" output "$ENV{VisualStudioVersion}")
+        list(GET output 0 _msvc_version)
+        set(${result} ${_msvc_version} PARENT_SCOPE)
+    else()
+        if(CMAKE_VS_PLATFORM_TOOLSET)
+            string(REGEX MATCHALL "[0-9]+" output "${CMAKE_VS_PLATFORM_TOOLSET}")
+            list(GET output 0 _toolset_version)
+            if(_toolset_version LESS 142)
+                if ("${_toolset_version}" EQUAL "141")
+                    set(_msvc_version "15")
+                else()
+                    string(SUBSTRING ${_toolset_version} 0 2 _msvc_version)
+                endif()
+                set(${result} ${_msvc_version} PARENT_SCOPE)
+                return()
+            else()
+                message(STATUS "Conan **WARNING** : Unknown MSVC toolset ${_toolset_version}")
+            endif()
+        endif()
+
+        string(REGEX MATCHALL "[0-9]+" output "${CMAKE_GENERATOR}")
+        list(GET output 0 _msvc_version)
+        set(${result} ${_msvc_version} PARENT_SCOPE)
+    endif()
+endfunction()
+
+function(conan_cmake_settings result)
+    #message(STATUS "COMPILER " ${CMAKE_CXX_COMPILER})
+    #message(STATUS "COMPILER " ${CMAKE_CXX_COMPILER_ID})
+    #message(STATUS "VERSION " ${CMAKE_CXX_COMPILER_VERSION})
+    #message(STATUS "FLAGS " ${CMAKE_LANG_FLAGS})
+    #message(STATUS "LIB ARCH " ${CMAKE_CXX_LIBRARY_ARCHITECTURE})
+    #message(STATUS "BUILD TYPE " ${CMAKE_BUILD_TYPE})
+    #message(STATUS "GENERATOR " ${CMAKE_GENERATOR})
+    #message(STATUS "GENERATOR WIN64 " ${CMAKE_CL_64})
+
+    message(STATUS "Conan ** WARNING** : This detection of settings from cmake is experimental and incomplete. "
+                    "Please check 'conan.cmake' and contribute")
+
+    if(CONAN_CMAKE_MULTI)
+        set(_SETTINGS -g cmake_multi)
+    else()
+        set(_SETTINGS -g cmake)
+    endif()
+    if(CMAKE_BUILD_TYPE)
+        if(CMAKE_BUILD_TYPE STREQUAL "MinSizeRel" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
+            set(CMAKE_BUILD_TYPE "Release")
+        endif()
+        set(_SETTINGS ${_SETTINGS} -s build_type=${CMAKE_BUILD_TYPE})
+    else()
+        message(FATAL_ERROR "Please specify in command line CMAKE_BUILD_TYPE (-DCMAKE_BUILD_TYPE=Release)")
+    endif()
+
+    #handle -s os setting
+    if(CMAKE_SYSTEM_NAME)
+    #use default conan os setting if CMAKE_SYSTEM_NAME is not defined
+        set(CONAN_SYSTEM_NAME ${CMAKE_SYSTEM_NAME})
+        if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
+            set(CONAN_SYSTEM_NAME Macos)
+        endif()
+        set(CONAN_SUPPORTED_PLATFORMS Windows Linux Macos Android iOS FreeBSD)
+        list (FIND CONAN_SUPPORTED_PLATFORMS "${CONAN_SYSTEM_NAME}" _index)
+        if (${_index} GREATER -1)
+            #check if the cmake system is a conan supported one
+            set(_SETTINGS ${_SETTINGS} -s os=${CONAN_SYSTEM_NAME})
+        else()
+            message(FATAL_ERROR "cmake system ${CONAN_SYSTEM_NAME} is not supported by conan. Use one of ${CONAN_SUPPORTED_PLATFORMS}")
+        endif()
+    endif()
+
+    if (${CMAKE_CXX_COMPILER_ID} STREQUAL GNU)
+        # using GCC
+        # TODO: Handle other params
+        string(REPLACE "." ";" VERSION_LIST ${CMAKE_CXX_COMPILER_VERSION})
+        list(GET VERSION_LIST 0 MAJOR)
+        list(GET VERSION_LIST 1 MINOR)
+        conan_cmake_detect_gnu_libcxx(_LIBCXX)
+        set(_SETTINGS ${_SETTINGS} -s compiler=gcc -s compiler.version=${MAJOR}.${MINOR} -s compiler.libcxx=${_LIBCXX})
+    elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL AppleClang)
+        # using AppleClang
+        string(REPLACE "." ";" VERSION_LIST ${CMAKE_CXX_COMPILER_VERSION})
+        list(GET VERSION_LIST 0 MAJOR)
+        list(GET VERSION_LIST 1 MINOR)
+        set(_SETTINGS ${_SETTINGS} -s compiler=apple-clang -s compiler.version=${MAJOR}.${MINOR} -s compiler.libcxx=libc++)
+    elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL Clang)
+        string(REPLACE "." ";" VERSION_LIST ${CMAKE_CXX_COMPILER_VERSION})
+        list(GET VERSION_LIST 0 MAJOR)
+        list(GET VERSION_LIST 1 MINOR)
+        if(APPLE)
+            cmake_policy(GET CMP0025 APPLE_CLANG_POLICY_ENABLED)
+            if(NOT APPLE_CLANG_POLICY_ENABLED)
+                message(STATUS "Conan: APPLE and Clang detected. Assuming apple-clang compiler. Set CMP0025 to avoid it")
+                set(_SETTINGS ${_SETTINGS} -s compiler=apple-clang -s compiler.version=${MAJOR}.${MINOR} -s compiler.libcxx=libc++)
+            else()
+                set(_SETTINGS ${_SETTINGS} -s compiler=clang -s compiler.version=${MAJOR}.${MINOR} -s compiler.libcxx=libstdc++)
+            endif()
+        else()
+            set(_SETTINGS ${_SETTINGS} -s compiler=clang -s compiler.version=${MAJOR}.${MINOR} -s compiler.libcxx=libstdc++)
+        endif()
+    elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC)
+        set(_VISUAL "Visual Studio")
+        _get_msvc_ide_version(_VISUAL_VERSION)
+        if("${_VISUAL_VERSION}" STREQUAL "")
+            message(FATAL_ERROR "Visual Studio not recognized")
+        else()
+            set(_SETTINGS ${_SETTINGS} -s compiler=${_VISUAL} -s compiler.version=${_VISUAL_VERSION})
+        endif()
+
+        if(${CMAKE_GENERATOR} STREQUAL "Ninja")
+            if($ENV{Platform} STREQUAL "X64" OR MSVC_CXX_ARCHITECTURE_ID MATCHES "64")
+                set(_SETTINGS ${_SETTINGS} -s arch=x86_64)
+            elseif($ENV{Platform} STREQUAL "ARM")
+                message(STATUS "Conan: Using default ARM architecture from MSVC")
+                set(_SETTINGS ${_SETTINGS} -s arch=armv6)
+            else()
+                set(_SETTINGS ${_SETTINGS} -s arch=x86)
+            endif()
+        else()
+            if(${CMAKE_GENERATOR} MATCHES "Win64")
+                set(_SETTINGS ${_SETTINGS} -s arch=x86_64)
+            elseif (${CMAKE_GENERATOR} MATCHES "ARM")
+                message(STATUS "Conan: Using default ARM architecture from MSVC")
+                set(_SETTINGS ${_SETTINGS} -s arch=armv6)
+            else()
+                set(_SETTINGS ${_SETTINGS} -s arch=x86)
+            endif()
+        endif()
+
+        conan_cmake_detect_vs_runtime(_vs_runtime)
+        message(STATUS "Detected VS runtime: ${_vs_runtime}")
+        set(_SETTINGS ${_SETTINGS} -s compiler.runtime=${_vs_runtime})
+    else()
+        message(FATAL_ERROR "Conan: compiler setup not recognized")
+    endif()
+
+    set(${result} ${_SETTINGS} PARENT_SCOPE)
+endfunction()
+
+
+function(conan_cmake_detect_gnu_libcxx result)
+    # Allow -D_GLIBCXX_USE_CXX11_ABI=ON/OFF as argument to cmake
+    if(DEFINED _GLIBCXX_USE_CXX11_ABI)
+        if(_GLIBCXX_USE_CXX11_ABI)
+            set(${result} libstdc++11 PARENT_SCOPE)
+            return()
+        else()
+            set(${result} libstdc++ PARENT_SCOPE)
+            return()
+        endif()
+    endif()
+
+    # Check if there's any add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
+    get_directory_property(defines DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMPILE_DEFINITIONS)
+    foreach(define ${defines})
+        if(define STREQUAL "_GLIBCXX_USE_CXX11_ABI=0")
+            set(${result} libstdc++ PARENT_SCOPE)
+            return()
+        endif()
+    endforeach()
+
+    # Use C++11 stdlib as default if gcc is 5.1+
+    if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "5.1")
+      set(${result} libstdc++ PARENT_SCOPE)
+    else()
+      set(${result} libstdc++11 PARENT_SCOPE)
+    endif()
+endfunction()
+
+
+function(conan_cmake_detect_vs_runtime result)
+    string(TOUPPER ${CMAKE_BUILD_TYPE} build_type)
+    set(variables CMAKE_CXX_FLAGS_${build_type} CMAKE_C_FLAGS_${build_type} CMAKE_CXX_FLAGS CMAKE_C_FLAGS)
+    foreach(variable ${variables})
+        string(REPLACE " " ";" flags ${${variable}})
+        foreach (flag ${flags})
+            if(${flag} STREQUAL "/MD" OR ${flag} STREQUAL "/MDd" OR ${flag} STREQUAL "/MT" OR ${flag} STREQUAL "/MTd")
+                string(SUBSTRING ${flag} 1 -1 runtime)
+                set(${result} ${runtime} PARENT_SCOPE)
+                return()
+            endif()
+        endforeach()
+    endforeach()
+    if(${build_type} STREQUAL "DEBUG")
+        set(${result} "MDd" PARENT_SCOPE)
+    else()
+        set(${result} "MD" PARENT_SCOPE)
+    endif()
+endfunction()
+
+
+macro(parse_arguments)
+  set(options BASIC_SETUP CMAKE_TARGETS UPDATE)
+  set(oneValueArgs CONANFILE)
+  set(multiValueArgs REQUIRES OPTIONS IMPORTS BUILD CONAN_COMMAND)
+  cmake_parse_arguments(ARGUMENTS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
+endmacro()
+
+function(conan_cmake_install)
+    # Calls "conan install"
+    # Argument BUILD is equivalant to --build={missing, PkgName,...}
+    # Argument CONAN_COMMAND, to specify the conan path, e.g. in case of running from source
+    # cmake does not identify conan as command, even if it is +x and it is in the path
+    parse_arguments(${ARGV})
+
+    set(CONAN_BUILD_POLICY "")
+    foreach(ARG ${ARGUMENTS_BUILD})
+        if(${ARG} STREQUAL "all")
+            set(CONAN_BUILD_POLICY ${CONAN_BUILD_POLICY} --build)
+            break()
+        else()
+            set(CONAN_BUILD_POLICY ${CONAN_BUILD_POLICY} --build=${ARG})
+        endif()
+    endforeach()
+    if(ARGUMENTS_CONAN_COMMAND)
+       set(conan_command ${ARGUMENTS_CONAN_COMMAND})
+    else()
+      set(conan_command conan)
+    endif()
+    if(ARGUMENTS_CONANFILE)
+      set(CONANFILE -f=${CMAKE_CURRENT_SOURCE_DIR}/${ARGUMENTS_CONANFILE})
+    endif()
+    if(ARGUMENTS_UPDATE)
+      set(CONAN_INSTALL_UPDATE --update)
+    endif()
+    set(conan_args install ${CONANFILE} ${settings} ${CONAN_BUILD_POLICY} ${CONAN_INSTALL_UPDATE})
+
+    string (REPLACE ";" " " _conan_args "${conan_args}")
+    message(STATUS "Conan executing: ${conan_command} ${_conan_args}")
+
+    execute_process(COMMAND ${conan_command} ${conan_args}
+                     RESULT_VARIABLE return_code
+                     WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
+
+    if(NOT "${return_code}" STREQUAL "0")
+      message(FATAL_ERROR "Conan install failed='${return_code}'")
+    endif()
+
+endfunction()
+
+
+function(conan_cmake_setup_conanfile)
+  parse_arguments(${ARGV})
+  if(ARGUMENTS_CONANFILE)
+    # configure_file will make sure cmake re-runs when conanfile is updated
+    configure_file(${ARGUMENTS_CONANFILE} ${ARGUMENTS_CONANFILE}.junk)
+    file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/${ARGUMENTS_CONANFILE}.junk)
+  else()
+    conan_cmake_generate_conanfile(${ARGV})
+  endif()
+endfunction()
+
+function(conan_cmake_generate_conanfile)
+  # Generate, writing in disk a conanfile.txt with the requires, options, and imports
+  # specified as arguments
+  # This will be considered as temporary file, generated in CMAKE_CURRENT_BINARY_DIR
+  parse_arguments(${ARGV})
+  set(_FN "${CMAKE_CURRENT_BINARY_DIR}/conanfile.txt")
+
+  file(WRITE ${_FN} "[generators]\ncmake\n\n[requires]\n")
+  foreach(ARG ${ARGUMENTS_REQUIRES})
+    file(APPEND ${_FN} ${ARG} "\n")
+  endforeach()
+
+  file(APPEND ${_FN} ${ARG} "\n[options]\n")
+  foreach(ARG ${ARGUMENTS_OPTIONS})
+    file(APPEND ${_FN} ${ARG} "\n")
+  endforeach()
+
+  file(APPEND ${_FN} ${ARG} "\n[imports]\n")
+  foreach(ARG ${ARGUMENTS_IMPORTS})
+    file(APPEND ${_FN} ${ARG} "\n")
+  endforeach()
+endfunction()
+
+
+macro(conan_load_buildinfo)
+    if(CONAN_CMAKE_MULTI)
+      set(_CONANBUILDINFO conanbuildinfo_multi.cmake)
+    else()
+      set(_CONANBUILDINFO conanbuildinfo.cmake)
+    endif()
+    # Checks for the existence of conanbuildinfo.cmake, and loads it
+    # important that it is macro, so variables defined at parent scope
+    if(EXISTS "${CMAKE_CURRENT_BINARY_DIR}/${_CONANBUILDINFO}")
+      message(STATUS "Conan: Loading ${_CONANBUILDINFO}")
+      include(${CMAKE_CURRENT_BINARY_DIR}/${_CONANBUILDINFO})
+    else()
+      message(FATAL_ERROR "${_CONANBUILDINFO} doesn't exist in ${CMAKE_CURRENT_BINARY_DIR}")
+    endif()
+endmacro()
+
+
+macro(conan_cmake_run)
+    parse_arguments(${ARGV})
+
+    if(CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE AND NOT CONAN_EXPORTED)
+        set(CONAN_CMAKE_MULTI ON)
+        message(STATUS "Conan: Using cmake-multi generator")
+    else()
+        set(CONAN_CMAKE_MULTI OFF)
+    endif()
+    if(NOT CONAN_EXPORTED)
+        conan_cmake_setup_conanfile(${ARGV})
+        if(CONAN_CMAKE_MULTI)
+            foreach(CMAKE_BUILD_TYPE "Release" "Debug")
+                conan_cmake_settings(settings)
+                conan_cmake_install(SETTINGS ${settings} ${ARGV})
+            endforeach()
+            set(CMAKE_BUILD_TYPE)
+        else()
+            conan_cmake_settings(settings)
+            conan_cmake_install(SETTINGS ${settings} ${ARGV})
+        endif()
+    endif()
+
+    conan_load_buildinfo()
+
+    if(ARGUMENTS_BASIC_SETUP)
+      if(ARGUMENTS_CMAKE_TARGETS)
+        conan_basic_setup(TARGETS)
+      else()
+        conan_basic_setup()
+      endif()
+    endif()
+endmacro()
\ No newline at end of file
diff --git a/scripts/jenkins/clang.groovy b/scripts/jenkins/clang.groovy
index 45506d6fa088d6e5005fcefc2f44c7a60abd04e5..fbf9d9f205ff5629622d62f4e9e2ff283af94afb 100644
--- a/scripts/jenkins/clang.groovy
+++ b/scripts/jenkins/clang.groovy
@@ -3,8 +3,6 @@
 node('docker') {
     def defaultDockerArgs = '-v /home/jenkins/.ccache:/usr/src/.ccache'
     def defaultCMakeOptions =
-        '-DOGS_LIB_BOOST=System ' +
-        '-DOGS_LIB_VTK=System ' +
         '-DOGS_ADDRESS_SANITIZER=ON ' +
         '-DOGS_UNDEFINED_BEHAVIOR_SANITIZER=ON ' +
         '-DOGS_BUILD_UTILS=ON'
diff --git a/scripts/jenkins/gcc-conan.groovy b/scripts/jenkins/gcc-conan.groovy
index cbc941db6634f25491573497fd7a6555b2197ef8..9f9c99ce242198b61ccbedacf00798fc4d61ca8a 100644
--- a/scripts/jenkins/gcc-conan.groovy
+++ b/scripts/jenkins/gcc-conan.groovy
@@ -1,10 +1,9 @@
 def defaultDockerArgs = '-v /home/jenkins/.ccache:/usr/src/.ccache ' +
-    '-v /home/jenkins/conan-data:/root/.conan/data'
+    '-v /home/jenkins/conan-data:/home/jenkins/.conan/data'
 
 def defaultCMakeOptions =
     '-DCMAKE_BUILD_TYPE=Release ' +
-    '-DOGS_LIB_BOOST=System ' +
-    '-DOGS_LIB_VTK=System ' +
+    '-DOGS_USE_CONAN=ON ' +
     '-DOGS_CPU_ARCHITECTURE=generic '
 
 def guiCMakeOptions =
@@ -25,8 +24,7 @@ image.inside(defaultDockerArgs) {
     stage('Configure (Linux-Docker)') {
         configure.linux(
             cmakeOptions: defaultCMakeOptions,
-            script: this,
-            useConan: true
+            script: this
         )
     }
 
@@ -41,17 +39,15 @@ image.inside(defaultDockerArgs) {
     stage('Data Explorer (Linux-Docker)') {
         configure.linux(
             cmakeOptions: defaultCMakeOptions + guiCMakeOptions,
-            conanOptions: "-o gui=True",
             keepDir: true,
-            script: this,
-            useConan: true
+            script: this
         )
         build.linux(script: this)
     }
 }
 
 stage('Archive (Linux-Docker)') {
-    archiveArtifacts 'build/*.tar.gz'
+    archiveArtifacts 'build/*.tar.gz,build/conaninfo.txt'
 }
 
 stage('Post (Linux-Docker)') {
diff --git a/scripts/jenkins/gcc-dynamic.groovy b/scripts/jenkins/gcc-dynamic.groovy
index a05d3970d6ab7ae8a747e231eb244fc7c76f59e2..56cf973f0b90e3e70008e873db7f208140a33a41 100644
--- a/scripts/jenkins/gcc-dynamic.groovy
+++ b/scripts/jenkins/gcc-dynamic.groovy
@@ -1,7 +1,5 @@
 def defaultCMakeOptions =
     '-DCMAKE_BUILD_TYPE=Release ' +
-    '-DOGS_LIB_BOOST=System ' +
-    '-DOGS_LIB_VTK=System ' +
     '-DOGS_BUILD_UTILS=ON ' +
     '-DOGS_BUILD_METIS=ON '
 
diff --git a/scripts/jenkins/gcc-tests-large.groovy b/scripts/jenkins/gcc-tests-large.groovy
index 568c32d53060c6fc788da1417fba8a2b282b0458..13c63abcdcffa692b09b07bb36f398de956b2e27 100644
--- a/scripts/jenkins/gcc-tests-large.groovy
+++ b/scripts/jenkins/gcc-tests-large.groovy
@@ -1,9 +1,6 @@
 def defaultDockerArgs = '-v /home/jenkins/.ccache:/usr/src/.ccache'
 def defaultCMakeOptions =
     '-DCMAKE_BUILD_TYPE=Release ' +
-    '-DOGS_LIB_BOOST=System ' +
-    '-DOGS_LIB_EIGEN=System ' +
-    '-DOGS_LIB_VTK=System ' +
     '-DOGS_USE_LIS=ON'
 
 def configure = new ogs.configure()
diff --git a/scripts/jenkins/gcc.groovy b/scripts/jenkins/gcc.groovy
index 7c0a9cda85f9f1f8ee4d0ec77699fca7f20ccd50..3f5f8896690d41074cd1e359640c5bc1ac4ada74 100644
--- a/scripts/jenkins/gcc.groovy
+++ b/scripts/jenkins/gcc.groovy
@@ -1,9 +1,6 @@
 def defaultDockerArgs = '-v /home/jenkins/.ccache:/usr/src/.ccache'
 def defaultCMakeOptions =
     '-DCMAKE_BUILD_TYPE=Release ' +
-    '-DOGS_LIB_BOOST=System ' +
-    '-DOGS_LIB_EIGEN=Local ' +
-    '-DOGS_LIB_VTK=System ' +
     '-DOGS_CPU_ARCHITECTURE=generic '
 
 def guiCMakeOptions =
diff --git a/scripts/jenkins/mac.groovy b/scripts/jenkins/mac.groovy
index e2b02853427fd4997b2c5b4415d0c1aee4102c85..4ce0a23e3baf64dd8e31279ced92e665d5b632cf 100644
--- a/scripts/jenkins/mac.groovy
+++ b/scripts/jenkins/mac.groovy
@@ -1,8 +1,6 @@
 def defaultCMakeOptions =
     '-DCMAKE_BUILD_TYPE=Release ' +
     '-DOGS_CPU_ARCHITECTURE=core2 ' +
-    '-DOGS_LIB_BOOST=System' +
-    '-DOGS_LIB_VTK=System ' +
     '-DOGS_DOWNLOAD_ADDITIONAL_CONTENT=ON ' +
     '-DCMAKE_OSX_DEPLOYMENT_TARGET="10.11" '
 
diff --git a/scripts/jenkins/msvc.groovy b/scripts/jenkins/msvc.groovy
index 9e15a398207bb03a6a2fa2c2ab1b818dfbd020f1..bce4f3d65528f5dcd8d319085913a00bfdada2a2 100644
--- a/scripts/jenkins/msvc.groovy
+++ b/scripts/jenkins/msvc.groovy
@@ -1,15 +1,14 @@
 
 def defaultCMakeOptions =
-    '-DOGS_LIB_BOOST=System ' +
-    '-DOGS_LIB_VTK=System ' +
-    '-DOGS_DOWNLOAD_ADDITIONAL_CONTENT=ON'
+    '-DOGS_USE_CONAN=ON ' +
+    '-DOGS_DOWNLOAD_ADDITIONAL_CONTENT=ON '
 
 def guiCMakeOptions =
     '-DOGS_BUILD_GUI=ON ' +
     '-DOGS_BUILD_UTILS=ON ' +
     '-DOGS_BUILD_TESTS=OFF ' +
     '-DOGS_BUILD_SWMM=ON ' +
-    '-DOGS_BUILD_METIS=ON'
+    '-DOGS_BUILD_METIS=ON '
 
 def configure = new ogs.configure()
 def build = new ogs.build()
@@ -32,8 +31,7 @@ withEnv(helper.getEnv(this)) {
 
     stage('Data Explorer (Win)') {
         configure.win(
-            cmakeOptions: defaultCMakeOptions + ' ' + guiCMakeOptions, keepDir: true,
-            conanOptions: "-o gui=True",
+            cmakeOptions: defaultCMakeOptions + guiCMakeOptions, keepDir: true,
             script: this
         )
         build.win(script: this)
diff --git a/scripts/jenkins/msvc32.groovy b/scripts/jenkins/msvc32.groovy
index 17a5a48a43ad58f552fee8bc94365c60c4303892..48ecb7f7aec908eadd2604e9d99de1a3dc9830b6 100644
--- a/scripts/jenkins/msvc32.groovy
+++ b/scripts/jenkins/msvc32.groovy
@@ -1,13 +1,12 @@
 def defaultCMakeOptions =
     '-DCMAKE_BUILD_TYPE=Release ' +
+    '-DOGS_USE_CONAN=ON ' +
     '-DOGS_32_BIT=ON ' +
-    '-DOGS_LIB_BOOST=System ' +
-    '-DOGS_LIB_VTK=System ' +
     '-DOGS_DOWNLOAD_ADDITIONAL_CONTENT=ON ' +
     '-DOGS_BUILD_GUI=ON ' +
     '-DOGS_BUILD_UTILS=OFF ' +
     '-DOGS_BUILD_TESTS=OFF ' +
-    '-DOGS_BUILD_CLI=OFF'
+    '-DOGS_BUILD_CLI=OFF '
 
 def configure = new ogs.configure()
 def build = new ogs.build()
@@ -20,7 +19,6 @@ withEnv(helper.getEnv(this, 'x32')) {
         configure.win(
             arch: 'x86',
             cmakeOptions: defaultCMakeOptions,
-            conanOptions: "-o gui=True",
             script: this
         )
         build.win(script: this)
@@ -28,6 +26,6 @@ withEnv(helper.getEnv(this, 'x32')) {
 }
 
 stage('Post 32-bit (Win)') {
-    archiveArtifacts 'build/*.zip'
+    archiveArtifacts 'build/*.zip,build/conaninfo.txt'
     post.cleanup('build')
 }
diff --git a/scripts/travis/eigen.sh b/scripts/travis/eigen.sh
new file mode 100644
index 0000000000000000000000000000000000000000..de97440c900ee0b07b3ebb9cf6516e48aef8710e
--- /dev/null
+++ b/scripts/travis/eigen.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+set -e
+# check to see if cmake folder is empty
+if [ ! -d "$HOME/eigen-eigen-dc6cfdf9bcec/Eigen" ]; then
+    ZIP="3.2.9.zip"
+    cd $HOME
+    curl -L -o $ZIP http://bitbucket.org/eigen/eigen/get/$ZIP;
+    unzip $ZIP;
+else
+    echo 'Using cached eigen directory.';
+fi