diff --git a/src/app/crbeam/CMakeLists.txt b/src/app/crbeam/CMakeLists.txt
index a16621efa6b908fd01db16a3eb54122be5a0b43b..66f9d7ac8ba7c9bb7b09ae33b20c3c19568efd10 100644
--- a/src/app/crbeam/CMakeLists.txt
+++ b/src/app/crbeam/CMakeLists.txt
@@ -1,22 +1,22 @@
 cmake_minimum_required (VERSION 2.6)
 project (CRbeam)
-
+# uncomment the line below for verbose output
+#set(CMAKE_VERBOSE_MAKEFILE ON)
 add_definitions(-DUSE_GSL)
 
 include_directories ("../../lib" "../../OS/include")
 
-#include_directories(../../external/include ../../external/OS/include)
-set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG -O0 -fopenmp")
-set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG -O0 -fopenmp -pg")
-set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall -O2 -fopenmp")
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
+set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG -O0")
+set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG -O0 -pg")
+set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall -O2")
 set(CMAKE_PREFIX_PATH "external")
 
 # -rdynamic flux is only supported on systems with ELF executable format
 IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
-    set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -rdynamic")
-    set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -rdynamic")
-    set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -rdynamic")
-    set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -rdynamic")
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -rdynamic")
+    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -rdynamic")
 endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
 
 FIND_LIBRARY(C_LIBRARY c)
@@ -30,7 +30,7 @@ CmdLine.h
 CRbeam.cpp
 CRbeam.h
 )
-
+add_link_options(-fopenmp)
 add_executable(CRbeam ${SOURCE_FILES})
 target_link_libraries(CRbeam mcray ${C_LIBRARY} ${GSL_LIBRARY} ${GSLCBLAS_LIBRARY})
 
diff --git a/src/app/crbeam/CRbeam.cpp b/src/app/crbeam/CRbeam.cpp
index a49ed314cc6c79c4de293cca8ddab163a847f019..d30120b564768dfb52eb50aa957e7127796502e7 100644
--- a/src/app/crbeam/CRbeam.cpp
+++ b/src/app/crbeam/CRbeam.cpp
@@ -45,7 +45,6 @@
 #include "SteckerEBL.h"
 #include "CmdLine.h"
 #include "Stecker16Background.h"
-#include <omp.h>
 #include <stdlib.h>
 #include "MathUtils.h"
 
@@ -68,6 +67,7 @@ using namespace cors::cmdline;
  * the function should be provided by end user
  */
 int user_main(int argc, char** argv) {
+    std::cout << "Number of available threads: " << omp_thread_count() << std::endl;
 	CRbeam prog(argc, argv);
 	return prog.run();
 }
diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt
index a8caa232a7b7594be9c9ec1d09c7b8e50795a825..c45cf54ea9a5dfff13c3098126f8131861e9bb3c 100644
--- a/src/lib/CMakeLists.txt
+++ b/src/lib/CMakeLists.txt
@@ -1,5 +1,7 @@
 cmake_minimum_required (VERSION 2.6)
 project (mcray)
+# uncomment the line below for verbose output
+#set(CMAKE_VERBOSE_MAKEFILE ON)
 enable_language (Fortran)
 
 # FFLAGS depend on the compiler
@@ -7,21 +9,24 @@ get_filename_component (Fortran_COMPILER_NAME ${CMAKE_Fortran_COMPILER} NAME)
 
 if (Fortran_COMPILER_NAME MATCHES "gfortran.*")
   # gfortran
-  set (CMAKE_Fortran_FLAGS "-ffixed-line-length-200 -fno-f2c")
+  set (CMAKE_Fortran_FLAGS "-ffixed-line-length-200 -fno-f2c -fopenmp")
   set (CMAKE_Fortran_FLAGS_RELEASE "-O2")
   set (CMAKE_Fortran_FLAGS_DEBUG   "-O0 -g")
 elseif (Fortran_COMPILER_NAME MATCHES "ifort.*")
   # ifort (untested)
+  set (CMAKE_Fortran_FLAGS "-f77rtl -fopenmp")
   set (CMAKE_Fortran_FLAGS_RELEASE "-f77rtl -O2")
   set (CMAKE_Fortran_FLAGS_DEBUG   "-f77rtl -O0 -g")
 elseif (Fortran_COMPILER_NAME MATCHES "g77")
   # g77
-  set (CMAKE_Fortran_FLAGS_RELEASE "-fno-f2c -O2")
-  set (CMAKE_Fortran_FLAGS_DEBUG   "-fno-f2c -O0 -g")
+  set (CMAKE_Fortran_FLAGS "-fopenmp -fno-f2c")
+  set (CMAKE_Fortran_FLAGS_RELEASE "-O2")
+  set (CMAKE_Fortran_FLAGS_DEBUG   "-O0 -g")
 else (Fortran_COMPILER_NAME MATCHES "gfortran.*")
   message ("CMAKE_Fortran_COMPILER full path: " ${CMAKE_Fortran_COMPILER})
   message ("Fortran compiler: " ${Fortran_COMPILER_NAME})
-  message ("No optimized Fortran compiler flags are known, we just try -O2...")
+  message ("No optimized Fortran compiler flags are known, we just try -O2  -fopenmp...")
+  set (CMAKE_Fortran_FLAGS "-fopenmp")
   set (CMAKE_Fortran_FLAGS_RELEASE "-O2")
   set (CMAKE_Fortran_FLAGS_DEBUG   "-O0 -g")
 endif (Fortran_COMPILER_NAME MATCHES "gfortran.*")
@@ -30,17 +35,18 @@ endif (Fortran_COMPILER_NAME MATCHES "gfortran.*")
 add_definitions(-DUSE_GSL)
 include_directories(../OS/include ../external)
 
-set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG -O0 -fopenmp")
-set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG -O0 -fopenmp -pg")
-set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall -O2 -fopenmp")
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
+set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG -O0")
+set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG -O0 -pg")
+set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall -O2")
 set(CMAKE_PREFIX_PATH "../external")
 
 # -rdynamic flux is only supported on systems with ELF executable format
 IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
-  set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -rdynamic")
-  set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -rdynamic")
-  set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -rdynamic")
-  set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -rdynamic")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -rdynamic")
+  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -rdynamic")
+
 endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
 
 FIND_LIBRARY(C_LIBRARY c)
@@ -122,10 +128,11 @@ Stecker16Background.h
 Logger.cpp
 Logger.h)
 
+add_link_options(-fopenmp)
 add_library(mcray ${SOURCE_FILES})
 add_executable(mcray_test ExampleUserMain.cpp)
 add_executable(z2t z2t.cpp)
-target_link_libraries(mcray gfortran gomp ${OMP_LIBRARY} ${C_LIBRARY} ${GSL_LIBRARY} ${GSLCBLAS_LIBRARY})
+
+target_link_libraries(mcray gfortran ${C_LIBRARY} ${GSL_LIBRARY} ${GSLCBLAS_LIBRARY})
 target_link_libraries(mcray_test mcray)
 target_link_libraries(z2t mcray)
-
diff --git a/src/lib/Utils.cpp b/src/lib/Utils.cpp
index 3d3f0dddb2a2faa1294ddb87ab90245913659362..79b15748c54e11e331cc0ba7e66b3867bcf7a51b 100644
--- a/src/lib/Utils.cpp
+++ b/src/lib/Utils.cpp
@@ -27,6 +27,15 @@
 
 
 #include "Utils.h"
+#include <omp.h>
 
+namespace Utils {
 
+    int omp_thread_count() {
+        int n = 0;
+#pragma omp parallel reduction(+:n)
+        n += 1;
+        return n;
+    }
 
+} // end of namespace Utils
diff --git a/src/lib/Utils.h b/src/lib/Utils.h
index 3e8651aec0c0f1a59821032c39eedf96e253cf64..45c47a13fa38bbad836e6a2efdf2b9f3f674263f 100644
--- a/src/lib/Utils.h
+++ b/src/lib/Utils.h
@@ -228,6 +228,8 @@ private:
   T* iPointee;
 };
 
+int omp_thread_count();
+
 }//end of namespace Utils
 
 #endif	/* UTILS_H */