                          return retval;
                      }
 
-    // Kernel entry point to be loaded in the driver code. Details please refer
-    // to annotations for bfs_enactor.cuh
+    // The entry point in the driver code to SALSA is this Enact call.
     template <typename SALSAProblem>
         cudaError_t Enact(
                 CudaContext &context,
                 SALSAProblem *problem,
                 typename SALSAProblem::SizeT max_iteration)
         {
+            // Gunrock provides recommended settings here for kernel
+            // parameters, but they can be changed by end-users.
             typedef gunrock::oprtr::filter::KernelPolicy<
                 SALSAProblem,
                 300, //CUDA_ARCH

                rank_next = problem->data_slices[0]->d_hrank_next;
            }

            //swap rank_curr and rank_next
            util::MemsetCopyVectorKernel<<<128, 128>>>(rank_curr, rank_next, nodes); 
            util::MemsetKernel<<<128, 128>>>(rank_next, (Value)0.0, nodes);
        }

    template<
        typename AdvancePolicy,
        typename FilterPolicy,

                             Value,
                             SALSAProblem> ABackwardFunctor;

                         // Load the Setup function.
                         cudaError_t retval = cudaSuccess;
                         if (retval = EnactorBase::Setup(problem)) break;

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

                         // Now let's do some computation.
                         SizeT queue_length = g_slice->nodes;
                         int selector = 0;
                         {
                             // First we'll do some initialization
                             // code that runs just once. Start by
                             // initializing the frontier with all
                             // node IDs.
                             util::MemsetIdxKernel<<<BLOCK, THREAD>>>(g_slice->ping_pong_working_queue[selector], g_slice->nodes);

                             // Set predecessor nodes for each edge in
                             // the original graph.
                             gunrock::oprtr::advance::Kernel
                                 <AdvancePolicy, SALSAProblem, HForwardFunctor>
                                 <<<advance_grid_size, AdvancePolicy::THREADS>>>(
