diff --git a/CMakeLists.txt b/CMakeLists.txt
index 50986d0a927c0d890d300be952a458f552bb0ed8..ca6d0df1c8b00617041e5994e9bf4a2903ddbf12 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -28,7 +28,7 @@ IF(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC)
 					# see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33144
 					SET(CMAKE_CXX_FLAGS "-O3 -mtune=native -msse4.2 -DNDEBUG")
 				ELSE()
-                	SET(CMAKE_CXX_FLAGS "-O3 -march=native -mtune=native -msse4.2 -DNDEBUG")
+                	SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -march=native -mtune=native -msse4.2 -DNDEBUG")
 				ENDIF()
         ENDIF()
         # -g
diff --git a/MathLib/LinAlg/Solvers/CGParallel.cpp b/MathLib/LinAlg/Solvers/CGParallel.cpp
index bdfa4cfb32ca3967c03b9ca0b115ab1ea66b0b7c..dc689053b2d30ea328f741e8545c981d839ef12e 100644
--- a/MathLib/LinAlg/Solvers/CGParallel.cpp
+++ b/MathLib/LinAlg/Solvers/CGParallel.cpp
@@ -35,7 +35,6 @@ namespace MathLib {
 unsigned CGParallel(CRSMatrix<double,unsigned> const * mat, double const * const b,
 		double* const x, double& eps, unsigned& nsteps, unsigned num_threads)
 {
-	omp_set_num_threads(num_threads);
 	unsigned N = mat->getNRows();
 	double * __restrict__ p(new double[N]);
 	double * __restrict__ q(new double[N]);
diff --git a/SimpleTests/MatrixTests/MatMult.cpp b/SimpleTests/MatrixTests/MatMult.cpp
index c134f67459a5ab544a953f1d3520b1d96414e5ff..4b7f5d4cff519a7864a5010e6e5cc33b6afc90ce 100644
--- a/SimpleTests/MatrixTests/MatMult.cpp
+++ b/SimpleTests/MatrixTests/MatMult.cpp
@@ -57,11 +57,10 @@ int main(int argc, char *argv[])
 	}
 
 #ifdef _OPENMP
+	omp_set_num_threads(n_threads);
 	MathLib::CRSMatrixOpenMP<double, unsigned> mat (n, iA, jA, A, n_threads);
-	std::cout << "OpenMP matrix class used" << std::endl;
 #else
 	MathLib::CRSMatrix<double, unsigned> mat (n, iA, jA, A);
-	std::cout << "matrix class without OpenMP used" << std::endl;
 #endif
 //	CRSMatrixPThreads<double> mat (n, iA, jA, A, n_threads);
 	std::cout << mat.getNRows() << " x " << mat.getNCols() << std::endl;