                              Value,
                              SALSAProblem> ABackwardFunctor;
 
-                         //Load Setup function
+                         // Load the Setup function.
                          cudaError_t retval = cudaSuccess;
                          if (retval = EnactorBase::Setup(problem)) break;
 
-                        //Define graph topology data pointer (g_slice) and
-                        //problem specific data pointer (d_slice)
+                        // 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;
 
-                         //Prepare to do advance for each node. The purpose is to get information
-                         //about predecessor node ID for each edge in both graphs.
+                         // Now let's do some computation.
                          SizeT queue_length = g_slice->nodes;
                          int selector = 0;
                          {
-                             // Fill the frontier with all node IDs
+                             // 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);
 
-                             // Advance use HForwardFunctor to set predecessor
-                             // node for each edge in original graph
+                             // Set predecessor nodes for each edge in
+                             // the original graph.
                              gunrock::oprtr::advance::Kernel
                                  <AdvancePolicy, SALSAProblem, HForwardFunctor>
                                  <<<advance_grid_size, AdvancePolicy::THREADS>>>(

                         return retval;
                     }

    // Kernel entry point to be loaded in the driver code. Details please refer
    // to annotations for bfs_enactor.cuh
    template <typename SALSAProblem>
        cudaError_t Enact(
                CudaContext &context,
                SALSAProblem *problem,
                typename SALSAProblem::SizeT max_iteration)
        {
            typedef gunrock::oprtr::filter::KernelPolicy<
                SALSAProblem,
                300, //CUDA_ARCH

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

class SalsaEnactor : public EnactorBase {

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

    // This user-defined function swaps current and next rank pointers
    template <typename ProblemData>
        void SwapRank(ProblemData *problem, int is_hub, int nodes)
        {
