diff --git a/CMake/FindShark.cmake b/CMake/FindShark.cmake
index 9e1e973d59fe617fa0e2c1bc3ba73bef75a2a418..9b2075732eebcf290375c47dc63bfcb76c76e723 100644
--- a/CMake/FindShark.cmake
+++ b/CMake/FindShark.cmake
@@ -41,9 +41,11 @@ if(Shark_DIR)
 
 endif() #if(Shark_DIR)
 
-find_path( SHARK_INCLUDE_DIR shark/Core/Shark.h
+find_path( SHARK_INCLUDE_DIR
+  NAMES shark/Core/Shark.h
   PATHS "${SHARK_SEARCH_PATH}"
-  PATH_SUFFIXES include include/shark shark)
+  PATH_SUFFIXES include include/sharkxx sharkxx
+  )
 
 find_library( SHARK_LIBRARY
   NAMES shark shark_debug
@@ -51,22 +53,37 @@ find_library( SHARK_LIBRARY
   PATH_SUFFIXES lib
   )
 
-mark_as_advanced( SHARK_INCLUDE_DIR
-                  SHARK_LIBRARY )
-find_package( 
-	Boost 1.48.0 REQUIRED QUIET COMPONENTS
+mark_as_advanced( SHARK_INCLUDE_DIR  SHARK_LIBRARY )
+
+find_package( Boost 1.48.0 REQUIRED QUIET COMPONENTS
 	system date_time filesystem
 	program_options serialization thread
 	unit_test_framework
-)
+	)
 
 if(NOT Boost_FOUND)
   message(FATAL_ERROR "Please make sure Boost 1.48.0 is installed on your system")
 endif()
 
+if(NOT SHARK_LIBRARY)
+  message(FATAL_ERROR "Cannot find SHARK_LIBRARY. set it with cmake -DSHARK_LIBRARY=")
+  return()
+endif()
+
+if(NOT SHARK_INCLUDE_DIR)
+  message(FATAL_ERROR "Cannot find SHARK_INCLUDE_DIR. Set it with cmake -DSHARK_INCLUDE_DIR=")
+  return()
+endif()
+
+get_filename_component(SHARK_INSTALLDIR ${SHARK_LIBRARY} PATH)
+get_filename_component(SHARK_INSTALLDIR ${SHARK_INSTALLDIR} PATH)
+
 if(NOT SHARK_CONFIG_FILE)
-  find_file(SHARK_CONFIG_FILE SharkConfig.cmake PATH_SUFFIXES lib/cmake/Shark share/Shark)
+  find_file(SHARK_CONFIG_FILE SharkConfig.cmake
+    PATHS ${SHARK_INSTALLDIR}
+    PATH_SUFFIXES lib/cmake/Shark share/Shark cmake/Shark)
 endif()
+
 if(SHARK_CONFIG_FILE)
   file(STRINGS "${SHARK_CONFIG_FILE}" SHARK_CONFIG_FILE_CONTENTS)
   string(REGEX REPLACE
@@ -81,13 +98,42 @@ if(SHARK_CONFIG_FILE)
 
   set(SHARK_VERSION_STRING 
   "${SHARK_VERSION_MAJOR}.${SHARK_VERSION_MINOR}.${SHARK_VERSION_PATCH}")
+endif()
+
+set(SHARK_USE_OPENMP_matched)
+#define SHARK_USE_OPENMP
+file(STRINGS "${SHARK_INSTALLDIR}/include/shark/Core/Shark.h" SHARK_H_CONTENTS)
+string(REGEX MATCH
+  "#define.SHARK_USE_OPENMP"
+  SHARK_USE_OPENMP_matched "${SHARK_H_CONTENTS}")
 
+#this variable is added in cache but not used now
+# you can use it to see if shark installation has openMP
+# later if needed in other places..
+set(SHARK_USE_OPENMP FALSE CACHE BOOL "shark is built with OpenMP")
+if(SHARK_USE_OPENMP_matched)
+  set(SHARK_USE_OPENMP TRUE CACHE BOOL "shark is built with OpenMP" FORCE)
 endif()
 
+if(SHARK_USE_OPENMP)
+  message(STATUS "Shark is built with OpenMP: SHARK_USE_OPENMP = TRUE")
+  find_package(OpenMP REQUIRED QUIET)
+  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}")
+  else()
+    message(FATAL_ERROR "Your shark libraries are compiled with it OpenMP")
+    set(SHARK_FOUND FALSE)
+  endif()
+else()
+  message(STATUS "Shark is built without OpenMP: SHARK_USE_OPENMP = FALSE")
+endif()
 INCLUDE(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
 FIND_PACKAGE_HANDLE_STANDARD_ARGS(Shark
-                                  REQUIRED_VARS SHARK_LIBRARY SHARK_INCLUDE_DIR
-                                  VERSION_VAR SHARK_VERSION_STRING)
+  REQUIRED_VARS SHARK_LIBRARY SHARK_INCLUDE_DIR
+  VERSION_VAR SHARK_VERSION_STRING)
+
 if(SHARK_FOUND)
   set(SHARK_INCLUDE_DIRS ${SHARK_INCLUDE_DIR} ${Boost_INCLUDE_DIR} )
   set(SHARK_LIBRARIES ${SHARK_LIBRARY} ${Boost_LIBRARIES} )