diff --git a/CMakeLists.txt b/CMakeLists.txt
index d2fd15a4f5b34fa1662703c759cd3ba1ca56f146..0cb47189db7c54f5bfba321a0aa0711e526994ff 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -71,7 +71,7 @@ if( WITH_CUDA STREQUAL "yes" )
         # disable false compiler warnings
         #   reference for the -Xcudafe flag: http://stackoverflow.com/questions/14831051/how-to-disable-compiler-warnings-with-nvcc/17095910#17095910
         #   list of possible tokens: http://www.ssl.berkeley.edu/~jimm/grizzly_docs/SSL/opt/intel/cc/9.0/lib/locale/en_US/mcpcom.msg
-        set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} ; --expt-relaxed-constexpr -Xcudafe "\"--diag_suppress=code_is_unreachable --diag_suppress=implicit_return_from_non_void_function\"")
+        set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} ; -Wno-deprecated-gpu-targets --expt-relaxed-constexpr -Xcudafe "\"--diag_suppress=code_is_unreachable --diag_suppress=implicit_return_from_non_void_function\"")
         #AddCompilerFlag( "-DHAVE_NOT_CXX11" ) # -U_GLIBCXX_ATOMIC_BUILTINS -U_GLIBCXX_USE_INT128 " )
         set( ALL_CUDA_ARCHS -gencode arch=compute_20,code=sm_20
                             -gencode arch=compute_30,code=sm_30
diff --git a/src/TNL/Functions/MeshFunction_impl.h b/src/TNL/Functions/MeshFunction_impl.h
index 973f79ac55ebdac7748d30859a53570d4f1d5127..97c2408478737695e3bd0a9b44da1863e6216bb9 100644
--- a/src/TNL/Functions/MeshFunction_impl.h
+++ b/src/TNL/Functions/MeshFunction_impl.h
@@ -134,6 +134,11 @@ setup( const MeshPointer& meshPointer,
       if( ! this->load( fileName ) )
          return false;
    }
+   else
+   {
+      std::cerr << "Missing parameter " << prefix << "file." << std::endl;
+      return false;
+   }
    return true;
 }
 
diff --git a/src/TNL/Meshes/GridDetails/GridTraverser_impl.h b/src/TNL/Meshes/GridDetails/GridTraverser_impl.h
index 1f5bcb0608d139ae4ae75ab70561ce462f26ff46..663308e0c6d86f4917a7403d8fc8c26ade96d936 100644
--- a/src/TNL/Meshes/GridDetails/GridTraverser_impl.h
+++ b/src/TNL/Meshes/GridDetails/GridTraverser_impl.h
@@ -121,12 +121,12 @@ GridTraverser1D(
    typename GridType::CoordinatesType coordinates;
  
    coordinates.x() = kernelData->begin.x() + ( gridIdx * Devices::Cuda::getMaxGridSize() + blockIdx.x ) * blockDim.x + threadIdx.x;
- 
-   GridEntity entity( *grid, coordinates, kernelData->entityOrientation, kernelData->entityBasis );
-   
-   entity.refresh();
    if( coordinates.x() <= kernelData->end.x() )
+   {   
+      GridEntity entity( *grid, coordinates, kernelData->entityOrientation, kernelData->entityBasis );
+      entity.refresh();
       EntitiesProcessor::processEntity( entity.getMesh(), *userData, entity );
+   }
 }
 
 template< typename Real,
@@ -148,6 +148,7 @@ GridBoundaryTraverser1D(
    if( threadIdx.x == 0 )
    {
       coordinates.x() = kernelData->begin.x();
+      printf( "thread %d coord %d \n", threadIdx.x, coordinates.x() );
       GridEntity entity( *grid, coordinates, kernelData->entityOrientation, kernelData->entityBasis );
       entity.refresh();
       EntitiesProcessor::processEntity( entity.getMesh(), *userData, entity );
@@ -155,6 +156,7 @@ GridBoundaryTraverser1D(
    if( threadIdx.x == 1 )
    {
       coordinates.x() = kernelData->end.x();
+      printf( "thread %d coord %d \n", threadIdx.x, coordinates.x() );
       GridEntity entity( *grid, coordinates, kernelData->entityOrientation, kernelData->entityBasis );
       entity.refresh();
       EntitiesProcessor::processEntity( entity.getMesh(), *userData, entity );
@@ -325,11 +327,12 @@ GridTraverser2D(
    coordinates.x() = kernelData->begin.x() + ( gridXIdx * Devices::Cuda::getMaxGridSize() + blockIdx.x ) * blockDim.x + threadIdx.x;
    coordinates.y() = kernelData->begin.y() + ( gridYIdx * Devices::Cuda::getMaxGridSize() + blockIdx.y ) * blockDim.y + threadIdx.y;  
    
-   GridEntity entity( *grid, coordinates, kernelData->entityOrientation, kernelData->entityBasis );
+   
 
-   if( entity.getCoordinates().x() <= kernelData->end.x() &&
-       entity.getCoordinates().y() <= kernelData->end.y() )
+   if( coordinates.x() <= kernelData->end.x() &&
+       coordinates.y() <= kernelData->end.y() )
    {
+      GridEntity entity( *grid, coordinates, kernelData->entityOrientation, kernelData->entityBasis );
       entity.refresh();
       if( ! processOnlyBoundaryEntities || entity.isBoundaryEntity() )
       {
@@ -526,12 +529,13 @@ GridTraverser3D(
    coordinates.y() = kernelData->begin.y() + ( gridYIdx * Devices::Cuda::getMaxGridSize() + blockIdx.y ) * blockDim.y + threadIdx.y;
    coordinates.z() = kernelData->begin.z() + ( gridZIdx * Devices::Cuda::getMaxGridSize() + blockIdx.z ) * blockDim.z + threadIdx.z;
  
-   GridEntity entity( *grid, coordinates, kernelData->entityOrientation, kernelData->entityBasis );
+   
 
-   if( entity.getCoordinates().x() <= kernelData->end.x() &&
-       entity.getCoordinates().y() <= kernelData->end.y() &&
-       entity.getCoordinates().z() <= kernelData->end.z() )
+   if( coordinates.x() <= kernelData->end.x() &&
+       coordinates.y() <= kernelData->end.y() &&
+       coordinates.z() <= kernelData->end.z() )
    {
+      GridEntity entity( *grid, coordinates, kernelData->entityOrientation, kernelData->entityBasis );
       entity.refresh();
       if( ! processOnlyBoundaryEntities || entity.isBoundaryEntity() )
       {
diff --git a/src/TNL/Problems/HeatEquationProblem_impl.h b/src/TNL/Problems/HeatEquationProblem_impl.h
index c9e965fbc54598e85858b279d54085073a2cedf3..d7ab9b4a5757575ceec51e02add04a70cefa2ce7 100644
--- a/src/TNL/Problems/HeatEquationProblem_impl.h
+++ b/src/TNL/Problems/HeatEquationProblem_impl.h
@@ -85,9 +85,16 @@ setup( const MeshPointer& meshPointer,
        const Config::ParameterContainer& parameters,
        const String& prefix )
 {
-   if( ! this->boundaryConditionPointer->setup( meshPointer, parameters, "boundary-conditions-" ) ||
-       ! this->rightHandSidePointer->setup( parameters, "right-hand-side-" ) )
+   if( ! this->boundaryConditionPointer->setup( meshPointer, parameters, "boundary-conditions-" ) )
+   {
+      std::cerr << "I was not able to initialize the boundary conditions." << std::endl;
       return false;
+   }
+   if( ! this->rightHandSidePointer->setup( parameters, "right-hand-side-" ) )
+   {
+      std::cerr << "I was not able to initialize the right-hand side function." << std::endl;
+      return false;
+   }
    return true;
 }