diff --git a/CMakeLists.txt b/CMakeLists.txt
index 468a1bd7af1726b60238f1e2e856a8a055a97098..28857123a654e2f23c8794936f0bad931fb8b4f0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -891,41 +891,24 @@ endif(WALBERLA_ENABLE_GUI)
 ##
 ############################################################################################################################
 
+if ( WALBERLA_BUILD_WITH_PARMETIS )
+   # metis is required for parmetis
+   set( WALBERLA_BUILD_WITH_METIS TRUE FORCE )
+endif ()
+
 if ( WALBERLA_BUILD_WITH_METIS )
-    find_package ( Metis QUIET )
+   find_package( Metis REQUIRED )
 
-    if ( METIS_FOUND )
-        include_directories( ${METIS_INCLUDE_DIRS} )
-        link_directories   ( ${METIS_LIBRARY_DIR}  )
-        list ( APPEND SERVICE_LIBS ${METIS_LIBRARIES} )
-        set  ( WALBERLA_BUILD_WITH_METIS TRUE )
-    else()
-        set  ( WALBERLA_BUILD_WITH_METIS OFF CACHE BOOL "Build with metis graph partitioner" FORCE )
-    endif()
-else()
-    set ( METIS_FOUND OFF CACHE BOOL "Metis found" FORCE )
-endif()
+   include_directories( ${METIS_INCLUDE_DIRS} )
+   list( APPEND SERVICE_LIBS ${METIS_LIBRARIES} )
 
+endif()
 
 if ( WALBERLA_BUILD_WITH_PARMETIS )
-   find_path(PARMETIS_INCLUDE_DIR parmetis.h
-      /usr/local/include
-      /usr/include
-      ${PARMETIS_ROOT}/include
-      $ENV{PARMETIS_ROOT}/include
-   )
-
-  find_library(PARMETIS_LIBRARY parmetis
-    /usr/local/lib
-    /usr/lib
-    ${PARMETIS_ROOT}/lib
-    $ENV{PARMETIS_ROOT}/lib
-  )
-
-  if( PARMETIS_INCLUDE_DIR AND PARMETIS_LIBRARY AND METIS_LIBRARY )
-    include_directories( ${PARMETIS_INCLUDE_DIR} )
-    list ( APPEND SERVICE_LIBS ${PARMETIS_LIBRARY} ${METIS_LIBRARY} )
-  endif()
+   find_package( Parmetis REQUIRED )
+
+   include_directories( ${PARMETIS_INCLUDE_DIR} )
+   list( APPEND SERVICE_LIBS ${PARMETIS_LIBRARY} )
 endif()
 
 ############################################################################################################################
diff --git a/cmake/FindParmetis.cmake b/cmake/FindParmetis.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..427e27673bdf352cf5ce81acd08d71639818564d
--- /dev/null
+++ b/cmake/FindParmetis.cmake
@@ -0,0 +1,9 @@
+find_path (PARMETIS_INCLUDE_DIR parmetis.h)
+find_library (PARMETIS_LIBRARY NAMES parmetis)
+
+# handle the QUIETLY and REQUIRED arguments and set PFFT_FOUND to TRUE if
+# all listed variables are TRUE
+include (FindPackageHandleStandardArgs)
+find_package_handle_standard_args (Parmetis DEFAULT_MSG PARMETIS_LIBRARY PARMETIS_INCLUDE_DIR)
+
+mark_as_advanced (PARMETIS_LIBRARY PARMETIS_INCLUDE_DIR)
\ No newline at end of file