 	int threadID = blockIdx.x * blockDim.x + threadIdx.x;
 	// Temp storage to store the neighbors' colors. 
 	int NeighborColors[MAX_DEGREE];
-	// Set the efault value of changed to false
+	// Set the default value of changed to false
 	*d_changed = false;
-	if (threadID <= d_NNZ) { 
+	if (threadID < d_NumVertices) { 
 		// So that we dont walk over the edge of the d_RowPtr array
 		if (d_ColorVector[threadID] == NO_COLOR){
 			// if the vertex is not colored

			for (int CurrNodeOffset=d_RowPtr[threadID]; CurrNodeOffset<d_RowPtr[threadID+1] ; CurrNodeOffset++){
				// Mark the neighbor's colors unavailable by
				// pushing them into the NeighborColors vector
				int NodeColor = d_ColorVector[d_ColIdx[CurrNodeOffset]];
				NeighborColors[NumNeighbors++] = NodeColor;
			}
			// Here, we have the neighbor's colors


// Init the ColorValid array
// TODO: Replace with one thrust::fill call
__global__ void InitializeColorVector(int d_NumVertices, bool* d_ColorValid, int* d_ColorVector){
	int threadID = blockIdx.x * blockDim.x + threadIdx.x;
	if (threadID < d_NumVertices){
		d_ColorValid[threadID] = false;	
		d_ColorVector[threadID] = NO_COLOR;
	}
}

