 			if(value.y != s[hash].y)
 				s[hash] = int2{EMPTY_BUCKET_KEY, EMPTY_BUCKET_KEY};
 			else if(old_value.x == EMPTY_BUCKET_KEY)
-			{
 				working = false;
-			}
-			else
-			{
-				value = old_value;
-			}
+			else value = old_value;
 		}
 	}
-	if(working)
-	{
-		atomicAdd(failures, 1);
-	}
+	if(working) atomicAdd(failures, 1);
 
 	// COPY SHARED MEMORY TO HASH MAP
 	__syncthreads();
-	if(idx2 < PART_HASH_MAP_SIZE)
-	{
-		hashMap_part[idx2].x = s[idx2].x;
-		hashMap_part[idx2].y = s[idx2].y;
-	}
-	__syncthreads();
-	hashMap_part[idx].x = s[idx].x;
-	hashMap_part[idx].y = s[idx].y;
+	if(idx2 < PART_HASH_MAP_SIZE) hashMap_part[idx2] = s[idx2];
+	hashMap_part[idx] = s[idx];
 }
 
 bool fast_cuckooHash(

		int* failures,
		int2* hashes)
{
	volatile unsigned i, hash;
	unsigned idx = threadIdx.x;
	unsigned idx2 = threadIdx.x + blockDim.x;
	__shared__ int2 s[PART_HASH_MAP_SIZE];

		Constants<3> constants,
		int max_iters)
{
	const int block_size = FAST_CUCKOO_HASH_BLOCK_SIZE;
	unsigned int* starts;
	unsigned int* counts;
