         return retval;
     }
 
-    // Kernel entry point to be loaded in the driver code
+    // The entry point in the driver code to BFS is this Enact call.
     template <typename BFSProblem>
         cudaError_t Enact(
                 CudaContext &context,
                 BFSProblem *problem, // Problem data sent in
                 typename BFSProblem::VertexId src) // Source node ID for BFS
         {
-            // Gunrock provide a recommend setting for running kernel to users
-            // here. This can be changed by users too.
+            // Gunrock provides recommended settings here for kernel
+            // parameters, but they can be changed by end-users.
             typedef gunrock::oprtr::filter::KernelPolicy<
                 BFSProblem,
                 300, //CUDA_ARCH

    cudaError_t EnactBFS(CudaContext &context,BFSProblem *problem,VertexId   src)
    {

        //Define BFSFunctor
        typedef BFSFunctor<
        typename BFSProblem::VertexId,
        typename BFSProblem::SizeT,
        typename BFSProblem::VertexId,
        BFSProblem> BfsFunctor;

        //Load Setup function to initialize kernel running parameters
        cudaError_t retval = cudaSuccess;
        if (retval = EnactorBase::Setup(problem)) break;

        //Define graph topology data pointer (g_slice) and problem specific
        //data pointer (d_slice)
        typename BFSProblem::GraphSlice *g_slice = problem->d_graph_slices;
        typename BFSProblem::DataSlice *d_slice = problem->d_data_slices;

        // queue length is initialized to 1 and get updated within each operator.
        SizeT queue_length = 1;
        //ping pong frontier queue selector
        int selector = 0; 

        // Taks source node as the first frontier, visit all neighbors using
        // Advance, set depth of those that haven't been set using BFSFunctor,
        // and filter out the invalid nodes to form a new frontier using Filter.
        // Until the frontier is empty.
        while (queue_length > 0) {
            gunrock::oprtr::advance::Kernel
                <AdvancePolicy, BFSProblem, BFSFunctor>

// The enactor defines how a graph primitive runs. It calls traversal
// (advance and filter operators) and computation (functors).

class BFSEnactor : public EnactorBase {

    // For BFS, Constructor, Destructor, and Setup functions are ignored

    template<
    typename AdvancePolicy,
