diff --git a/examples/hamilton-jacobi-parallel/tnlParallelEikonalSolver_impl.h b/examples/hamilton-jacobi-parallel/tnlParallelEikonalSolver_impl.h
index 276c02da5a05f6315d5c01e800ddfa11ba89ebef..049f712957a1c0c6ab4feebe05f0ddaf3c47a177 100644
--- a/examples/hamilton-jacobi-parallel/tnlParallelEikonalSolver_impl.h
+++ b/examples/hamilton-jacobi-parallel/tnlParallelEikonalSolver_impl.h
@@ -1474,7 +1474,7 @@ void /*tnlParallelEikonalSolver<SchemeHost, SchemeDevice, Device, double, int>::
 	//printf("hurewrwr %f \n", u[l]);
 	if(u[0] * u[l] <= 0.0)
 	{
-		printf("contains %d \n",i);
+		//printf("contains %d \n",i);
 		atomicMax( &containsCurve, 1);
 	}
 
@@ -1508,97 +1508,87 @@ void /*tnlParallelEikonalSolver<SchemeHost, SchemeDevice, Device, double, int>::
 	int i = blockIdx.y * gridDim.x + blockIdx.x;
 	int l = threadIdx.y * blockDim.x + threadIdx.x;
 
-	if(i+l == 0)
-		printf("a");
 	if(caller->getSubgridValueCUDA(i) != INT_MAX)
 	{
-		double a;
-		caller->getSubgridCUDA(i,caller, &a);
-		u[l] = a;
+		caller->getSubgridCUDA(i,caller, &u[l]);
 		int bound = caller->getBoundaryConditionCUDA(i);
-		if(l == 0)
+		//if(l == 0)
 			//printf("i = %d, bound = %d\n",i,caller->getSubgridValueCUDA(i));
 		if(bound & 1)
 		{
 			caller->runSubgridCUDA(1,u,i);
-			//this->calculationsCount[i]++;
+			__syncthreads();
+			caller->insertSubgridCUDA(u[l],i);
+			__syncthreads();
+			caller->getSubgridCUDA(i,caller, &u[l]);
+			__syncthreads();
 		}
-		__syncthreads();
-		caller->insertSubgridCUDA(u[l],i);
-		__syncthreads();
-		caller->getSubgridCUDA(i,caller, &a);
-		u[l] = a;
-		__syncthreads();
 		if(bound & 2)
 		{
 			caller->runSubgridCUDA(2,u,i);
-			//this->calculationsCount[i]++;
+			__syncthreads();
+			caller->insertSubgridCUDA(u[l],i);
+			__syncthreads();
+			caller->getSubgridCUDA(i,caller, &u[l]);
+			__syncthreads();
 		}
-		__syncthreads();
-		caller->insertSubgridCUDA(u[l],i);
-		__syncthreads();
-		caller->getSubgridCUDA(i,caller, &a);
-		u[l] = a;
-		__syncthreads();
 		if(bound & 4)
 		{
 			caller->runSubgridCUDA(4,u,i);
-			//this->calculationsCount[i]++;
+			__syncthreads();
+			caller->insertSubgridCUDA(u[l],i);
+			__syncthreads();
+			caller->getSubgridCUDA(i,caller, &u[l]);
+			__syncthreads();
 		}
-		__syncthreads();
-		caller->insertSubgridCUDA(u[l],i);
-		__syncthreads();
-		caller->getSubgridCUDA(i,caller, &a);
-		u[l] = a;
-		__syncthreads();
 		if(bound & 8)
 		{
 			caller->runSubgridCUDA(8,u,i);
-			//this->calculationsCount[i]++;
+			__syncthreads();
+			caller->insertSubgridCUDA(u[l],i);
+			__syncthreads();
+			caller->getSubgridCUDA(i,caller, &u[l]);
+			__syncthreads();
 		}
-		__syncthreads();
-		caller->insertSubgridCUDA(u[l],i);
-		__syncthreads();
-		caller->getSubgridCUDA(i,caller, &a);
-		u[l] = a;
-		__syncthreads();
+
+
 
 		if( ((bound & 2) ))
 		{
 			caller->runSubgridCUDA(3,u,i);
+			__syncthreads();
+			caller->insertSubgridCUDA(u[l],i);
+			__syncthreads();
+			caller->getSubgridCUDA(i,caller, &u[l]);
+			__syncthreads();
 		}
-		__syncthreads();
-		caller->insertSubgridCUDA(u[l],i);
-		__syncthreads();
-		caller->getSubgridCUDA(i,caller, &a);
-		u[l] = a;
-		__syncthreads();
 		if( ((bound & 4) ))
 		{
 			caller->runSubgridCUDA(5,u,i);
+			__syncthreads();
+			caller->insertSubgridCUDA(u[l],i);
+			__syncthreads();
+			caller->getSubgridCUDA(i,caller, &u[l]);
+			__syncthreads();
 		}
-		__syncthreads();
-		caller->insertSubgridCUDA(u[l],i);
-		__syncthreads();
-		caller->getSubgridCUDA(i,caller, &a);
-		u[l] = a;
-		__syncthreads();
 		if( ((bound & 2) ))
 		{
 			caller->runSubgridCUDA(10,u,i);
+			__syncthreads();
+			caller->insertSubgridCUDA(u[l],i);
+			__syncthreads();
+			caller->getSubgridCUDA(i,caller, &u[l]);
+			__syncthreads();
 		}
-		__syncthreads();
-		caller->insertSubgridCUDA(u[l],i);
-		__syncthreads();
-		caller->getSubgridCUDA(i,caller, &a);
-		u[l] = a;
-		__syncthreads();
 		if(   (bound & 4) )
 		{
 			caller->runSubgridCUDA(12,u,i);
+			__syncthreads();
+			caller->insertSubgridCUDA(u[l],i);
+			__syncthreads();
+			caller->getSubgridCUDA(i,caller, &u[l]);
+			__syncthreads();
 		}
-		__syncthreads();
-		caller->insertSubgridCUDA(u[l],i);
 
 
 		caller->setBoundaryConditionCUDA(i, 0);
@@ -1607,9 +1597,6 @@ void /*tnlParallelEikonalSolver<SchemeHost, SchemeDevice, Device, double, int>::
 
 	}
 
-
-	if(i+l == 0)
-		printf("b");
 }
 
 #endif /*HAVE_CUDA*/
diff --git a/src/operators/godunov-eikonal/parallelGodunovEikonal2D_impl.h b/src/operators/godunov-eikonal/parallelGodunovEikonal2D_impl.h
index c0dd0565f7ce2728f30be19174088a1af2643eb2..c37134862f68f020964636e29d36108d28f79a9d 100644
--- a/src/operators/godunov-eikonal/parallelGodunovEikonal2D_impl.h
+++ b/src/operators/godunov-eikonal/parallelGodunovEikonal2D_impl.h
@@ -331,7 +331,7 @@ Real parallelGodunovEikonalScheme< tnlGrid< 2, MeshReal, Device, MeshIndex >, Re
 
 	signui = sign(u[cellIndex],epsilon);
 #ifdef HAVE_CUDA
-	//printf("%d   :    %d ;;;; %d   :   %d\n",threadIdx.x, coordinates.x(), threadIdx.y,coordinates.y());
+	//printf("%d   :    %d ;;;; %d   :   %d  , %f \n",threadIdx.x, mesh.getDimensions().x() , threadIdx.y,mesh.getDimensions().y(), epsilon );
 #endif
 	//if(fabs(u[cellIndex]) < acc) return 0.0;
 
@@ -351,7 +351,7 @@ Real parallelGodunovEikonalScheme< tnlGrid< 2, MeshReal, Device, MeshIndex >, Re
 		   else *//*if(boundaryCondition & 2)
 			   xb = 0.0;
 		   else /**/if(coordinates.x() == 0)
-			   xb = positivePart((u[cellIndex] - u[mesh.template getCellNextToCell<+1,0>( cellIndex )])/hx);
+			   xb = positivePart((u[cellIndex] - u[mesh.template getCellNextToCell<1,0>( cellIndex )])/hx);
 		   else
 			   xb = positivePart((u[cellIndex] - u[mesh.template getCellNextToCell<-1,0>( cellIndex )])/hx);
 
@@ -388,7 +388,7 @@ Real parallelGodunovEikonalScheme< tnlGrid< 2, MeshReal, Device, MeshIndex >, Re
 			//   return 0.0;
 		   return signui*(1.0 - nabla);
 	   }
-	   else if (signui < 0.0)
+	   else if(signui < 0.0)
 	   {
 
 	/**/  /* if(boundaryCondition & 2)