diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8e802acf57c6522e83c2c2089ed664366bac8556..746dbc4eeba539a988e4850723cbdb8426f535ca 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,12 +1,17 @@
 # set minimum cmake version
-cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
+cmake_minimum_required(VERSION 3.8 FATAL_ERROR)
 
 # project name and language
 project(pmc-sog C CXX)
 
-# compiler flags
+# C++17 standard
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_CXX_EXTENSIONS OFF)
+
+# Add compiler flags
 if(CMAKE_COMPILER_IS_GNUCC)
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -std=c++17")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")
 endif()
 
 # add pn parser
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 2c4427474288d2513d76d55ca80a3d522fdb1ccc..89b6a20ae8dde0c64d72997e49de7cddf344ee63 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,5 +1,5 @@
 # set minimum cmake version
-cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
+cmake_minimum_required(VERSION 3.8 FATAL_ERROR)
 
 # include MPI
 find_package(MPI REQUIRED)
diff --git a/third-party/sylvan b/third-party/sylvan
index 7184c4aede8b1d95c33442862075b37f9eaae899..97208c7f528f08a91afa99da0d43c6734d36cfa4 160000
--- a/third-party/sylvan
+++ b/third-party/sylvan
@@ -1 +1 @@
-Subproject commit 7184c4aede8b1d95c33442862075b37f9eaae899
+Subproject commit 97208c7f528f08a91afa99da0d43c6734d36cfa4