 		//load \memory[facets_nn] 1 time.
 		to_visit[to_visit_pos++] = facets_nn[tid];
 		has_visited[has_visited_nb++] = to_visit[0];
-		
+
 		index_t counter = 0;
 		while (to_visit_pos){
 			index_t current_seed = to_visit[to_visit_pos - 1];
 			to_visit_pos--;
-			
+		
 			intersection_clip_facet_SR(
 				current_polygon,
 				current_seed,
 				points,
 				points_nb,
 				points_nn,
-				k_p
+				k_p,
+				retdata
 				);
-
+			
+			//atomicAdd(&g_seeds_polygon_nb[current_seed], 1);
 			//now we get the clipped polygon stored in "polygon", do something.
 			action(
 				current_polygon,
 				current_seed
 				);
 			//retdata[tid * 400]
-			if (counter < 10 && tid < facets_nb)
-				store_info(tid, current_seed, current_polygon, &retdata[tid * 400 + counter * 40]);
+			//if (counter < 10 && tid < facets_nb)
+				//store_info(tid, current_seed, current_polygon, &retdata[tid * 400 + counter * 40]);
 			//Propagate to adjacent seeds
 			for (index_t v = 0; v < current_polygon.vertex_nb; ++v)
 			{

		double*			retdata
		){
		index_t tid = blockIdx.x * blockDim.x + threadIdx.x;
		if (tid >= facets_nb) return;

		if (tid >= 0 && tid < points_nb){
			g_seeds_information[tid * 4 + 0] = 0.0;
			g_seeds_information[tid * 4 + 1] = 0.0;
			g_seeds_information[tid * 4 + 2] = 0.0;
			g_seeds_information[tid * 4 + 3] = 0.0;
		}

		//load \memory[facet] 3 times.
		int3 facet_index = {

		double prev_l = dot(prev_vertex_position, sub(position_i, position_j));

		int prev_status = sgn(2.0 * prev_l - d);
		
		//traverse the Vertex in this Polygon
		for (index_t k = 0; k < ping.vertex_nb; ++k){

