  * dSumTables - vector of the sum of the columns of the dCountingTables
  * dOutputAdvice - this node's advice to be fed to its children nodes
  */
+//TODO: make a check to see if it has enough shared memory
 __global__ void UpdateBeliefs( const int states, float *dPOS, float * dNewBeliefs, float * dOldBeliefs, int * dCountingTables,
 		int * dParentsInputAdvice, int parentStates, int * dSumTables, int * dOutputAdvice){
 

				}
			}
		}
		__syncthreads(); //TODO: is this the correct place for the sync?
		dOld = d;
	}


	//Points the 4 children nodes to the right parent for advice
	//Be careful of integer division if trying to simplify this.
	//TODO: simplify this
	int parent_node_id = blockIdx.x / 2 + (blockIdx.y /2 ) * (gridDim.x / 2) ;
	//TODO: could make one thread pull from global memory into shared memory, instead of all threads pulling
	const int advice = dParentsInputAdvice==NULL ? 0 : dParentsInputAdvice[parent_node_id];

	const int s2 = states * states;
