         if (retval = util::GRError(GPUMalloc(data_slices[0]->d_out_degrees, nodes))) break;
         if (retval = util::GRError(GPUMalloc(data_slices[0]->d_hub_predecessors, edges))) break;
         if (retval = util::GRError(GPUMalloc(data_slices[0]->d_auth_predecessors, edges))) break;
-        return retval;  
+        return retval;
     }
 
-    // Reset function will be loaded before each run of SALSA to reset problem related data.
+    // The Reset function primes the graph data structure to an
+    // initial state, which includes ...
     cudaError_t Reset(const Csr<VertexId, Value, SizeT> &graph)
     {
         cudaError_t retval = cudaSuccess;
         if (retval = util::GRError(ProblemBase::Reset(graph))) break;
 
-        // Initialize hub and authority rank scores
+        // ... initializing the hub and authority rank scores ...
         util::MemsetKernel<<<BLOCK, THREAD>>>(data_slices[0]->d_hrank_curr, (Value)1.0/out_nodes, nodes);
         util::MemsetKernel<<<BLOCK, THREAD>>>(data_slices[0]->d_arank_curr, (Value)1.0/in_nodes, nodes);
         util::MemsetKernel<<<BLOCK, THREAD>>>(data_slices[0]->d_hrank_next, 0, nodes);
         util::MemsetKernel<<<BLOCK, THREAD>>>(data_slices[0]->d_arank_next, 0, nodes);
 
-        // Compute in and out degrees for each node
+        // ... accurate in and out degrees for each node ...
         util::MemsetKernel<<<BLOCK, THREAD>>>(data_slices[0]->d_out_degrees, 0, nodes);
         util::MemsetKernel<<<BLOCK, THREAD>>>(data_slices[0]->d_in_degrees, 0, nodes);
         util::MemsetMadVectorKernel<<<BLOCK, THREAD>>>(data_slices[0]->d_out_degrees, BaseProblem::graph_slices[gpu]->d_row_offsets, &BaseProblem::graph_slices[gpu]->d_row_offsets[1], -1, nodes);
         util::MemsetMadVectorKernel<<<BLOCK, THREAD>>>(data_slices[0]->d_in_degrees, BaseProblem::graph_slices[gpu]->d_column_offsets, &BaseProblem::graph_slices[gpu]->d_column_offsets[1], -1, nodes);
 
-        // Initialize predecessors to INVALID_PREDECESSOR_ID
+        // ... and initializing predecessors with an INVALID_PREDECESSOR_ID.
         util::MemsetKernel<<<BLOCK, THREAD>>>(data_slices[0]->d_hub_predecessors, INVALID_PREDECESSOR_ID, edges);
         util::MemsetKernel<<<BLOCK, THREAD>>>(data_slices[0]->d_auth_predecessors, INVALID_PREDECESSOR_ID, edges);
 
-        return retval;  
+        return retval;
     }
 };

// Problem struct is inherited from ProblemBase struct, which stores graph
// topology data in CSR format and frontier buffers.

template<
typename VertexId,

struct SALSAProblem : public ProblemBase
{

    static const bool MARK_PREDECESSORS     = true; // for SALSA algorithm, we need to track predecessors in Advance
    static const bool ENABLE_IDEMPOTENCE    = false; // In SALSA, data races during Advance are not allowed.

    struct DataSlice
    {
