diff --git a/PuReMD/src/forces.c b/PuReMD/src/forces.c
index e8693c09bee8db7d82f3b05b6a0bd1ed610a0745..2eb3a19e1ec2bd9fbe08c25ff54e662933b0bdb8 100644
--- a/PuReMD/src/forces.c
+++ b/PuReMD/src/forces.c
@@ -353,9 +353,6 @@ void Init_Forces( reax_system *system, control_params *control,
     int total_sum[6];
     int nt_flag;
 #endif
-    real t_start, t_cm_init, total_cm_init;
-
-    t_cm_init = 0;
 
     far_nbrs = lists[FAR_NBRS];
     bonds = lists[BONDS];
@@ -379,7 +376,6 @@ void Init_Forces( reax_system *system, control_params *control,
     renbr = (data->step - data->prev_steps) % control->reneighbor == 0;
 
 #if defined(NEUTRAL_TERRITORY)
-    t_start = MPI_Wtime();
     nt_flag = 1;
     if( renbr )
     {
@@ -421,7 +417,6 @@ void Init_Forces( reax_system *system, control_params *control,
 
     mark[0] = mark[1] = 1;
     mark[2] = mark[3] = mark[4] = mark[5] = 2;
-    t_cm_init += MPI_Wtime() - t_start;
 #endif
 
     for ( i = 0; i < system->N; ++i )
@@ -466,12 +461,10 @@ void Init_Forces( reax_system *system, control_params *control,
         ihb_top = -1;
         if ( local == 1 )
         {
-            t_start = MPI_Wtime();
             H->start[i] = Htop;
             H->entries[Htop].j = i;
             H->entries[Htop].val = sbp_i->eta;
             ++Htop;
-            t_cm_init += MPI_Wtime() - t_start;
 
             if ( control->hbond_cut > 0 )
             {
@@ -534,7 +527,6 @@ void Init_Forces( reax_system *system, control_params *control,
 
                 if ( local == 1 )
                 {
-                    t_start = MPI_Wtime();
                     /* H matrix entry */
 #if defined(NEUTRAL_TERRITORY)
                     if ( atom_j->nt_dir > 0 || (j < system->n
@@ -580,7 +572,6 @@ void Init_Forces( reax_system *system, control_params *control,
                         ++Htop;
                     }
 #endif
-                    t_cm_init += MPI_Wtime() - t_start;
 
                     /* hydrogen bond lists */
                     if ( control->hbond_cut > 0 && (ihb == 1 || ihb == 2) &&
@@ -612,7 +603,6 @@ void Init_Forces( reax_system *system, control_params *control,
 #if defined(NEUTRAL_TERRITORY)
                 else if ( local == 2 )
                 {
-                    t_start = MPI_Wtime();
                     /* H matrix entry */
                     if( ( atom_j->nt_dir != -1 && mark[atom_i->nt_dir] != mark[atom_j->nt_dir] 
                                 && ( H->format == SYM_FULL_MATRIX
@@ -645,7 +635,6 @@ void Init_Forces( reax_system *system, control_params *control,
 
                         ++Htop;
                     }
-                    t_cm_init += MPI_Wtime() - t_start;
                 }
 #endif
 
@@ -670,7 +659,6 @@ void Init_Forces( reax_system *system, control_params *control,
         }
 
         Set_End_Index( i, btop_i, bonds );
-        t_start = MPI_Wtime();
         if ( local == 1 )
         {
             H->end[i] = Htop;
@@ -691,7 +679,6 @@ void Init_Forces( reax_system *system, control_params *control,
             }
         }
 #endif
-        t_cm_init += MPI_Wtime() - t_start;
     }
 
     if ( far_nbrs->format == FULL_LIST )
@@ -725,12 +712,6 @@ void Init_Forces( reax_system *system, control_params *control,
         }
     }
 
-    MPI_Reduce(&t_cm_init, &total_cm_init, 1, MPI_DOUBLE, MPI_SUM, MASTER_NODE, mpi_data->world);
-    if( system->my_rank == MASTER_NODE )
-    {
-        data->timing.init_qeq += total_cm_init / control->nprocs;
-    }
-
 #if defined(DEBUG)
     Print_Sparse_Matrix2( system, H, NULL );
 #endif
@@ -1211,7 +1192,7 @@ void Compute_Forces( reax_system *system, control_params *control,
     MPI_Comm comm;
     int qeq_flag;
 #if defined(LOG_PERFORMANCE)
-    real t_start = 0, t_elapsed;
+    real t_start, t_end;
 
     //MPI_Barrier( mpi_data->world );
     if ( system->my_rank == MASTER_NODE )
@@ -1237,14 +1218,12 @@ void Compute_Forces( reax_system *system, control_params *control,
     //MPI_Barrier( mpi_data->world );
     if ( system->my_rank == MASTER_NODE )
     {
-        //Update_Timing_Info( &t_start, &(data->timing.init_forces) );
-        real t_end = MPI_Wtime();
+        t_end = MPI_Wtime();
         data->timing.init_forces += t_end - t_start;
         t_start = t_end;
     }
 #endif
 
-
     /********* bonded interactions ************/
     Compute_Bonded_Forces( system, control, data, workspace,
                            lists, out_control, mpi_data->world );
@@ -1253,7 +1232,9 @@ void Compute_Forces( reax_system *system, control_params *control,
     //MPI_Barrier( mpi_data->world );
     if ( system->my_rank == MASTER_NODE )
     {
-        t_start = MPI_Wtime();
+        t_end = MPI_Wtime();
+        data->timing.bonded += t_end - t_start;
+        t_start = t_end;
     }
 #endif
 #if defined(DEBUG_FOCUS)
@@ -1262,7 +1243,6 @@ void Compute_Forces( reax_system *system, control_params *control,
     MPI_Barrier( mpi_data->world );
 #endif
 
-
     /**************** qeq ************************/
 #if defined(PURE_REAX)
     if ( qeq_flag )
@@ -1272,8 +1252,9 @@ void Compute_Forces( reax_system *system, control_params *control,
     //MPI_Barrier( mpi_data->world );
     if ( system->my_rank == MASTER_NODE )
     {
-        t_elapsed = MPI_Wtime() - t_start;
-        data->timing.cm += t_elapsed;
+        t_end = MPI_Wtime();
+        data->timing.cm += t_end - t_start;
+        t_start = t_end;
     }
 #endif
 #if defined(DEBUG_FOCUS)
@@ -1282,7 +1263,6 @@ void Compute_Forces( reax_system *system, control_params *control,
 #endif
 #endif //PURE_REAX
 
-
     /********* nonbonded interactions ************/
     Compute_NonBonded_Forces( system, control, data, workspace,
                               lists, out_control, mpi_data->world );
@@ -1291,9 +1271,8 @@ void Compute_Forces( reax_system *system, control_params *control,
     //MPI_Barrier( mpi_data->world );
     if ( system->my_rank == MASTER_NODE )
     {
-        //Update_Timing_Info( &t_start, &(data->timing.nonb) );
-        real t_end = MPI_Wtime();
-        data->timing.nonb += t_end - t_start;
+        t_end = MPI_Wtime();
+        data->timing.nonb += t_end - t_start + data->timing.cm;;
         t_start = t_end;
     }
 #endif
@@ -1303,7 +1282,6 @@ void Compute_Forces( reax_system *system, control_params *control,
     MPI_Barrier( mpi_data->world );
 #endif
 
-
     /*********** total force ***************/
     Compute_Total_Force( system, control, data, workspace, lists, mpi_data );
 
@@ -1311,10 +1289,8 @@ void Compute_Forces( reax_system *system, control_params *control,
     //MPI_Barrier( mpi_data->world );
     if ( system->my_rank == MASTER_NODE )
     {
-        //Update_Timing_Info( &t_start, &(data->timing.bonded) );
-        real t_end = MPI_Wtime();
+        t_end = MPI_Wtime();
         data->timing.bonded += t_end - t_start;
-        t_start = t_end;
     }
 #endif
 #if defined(DEBUG_FOCUS)
diff --git a/PuReMD/src/integrate.c b/PuReMD/src/integrate.c
index c3b2719ce8c2a306bdbf25d2a974d51e2e7c73a3..6b9d6b5ae11cda6c847f604d3a1f202927afbd6c 100644
--- a/PuReMD/src/integrate.c
+++ b/PuReMD/src/integrate.c
@@ -56,16 +56,16 @@ void Velocity_Verlet_NVE( reax_system* system, control_params* control,
         /* HACK: currently required that preconditioner (re)computation step
          * and reneighbor step (i.e., (re)construct far nbr list)
          * are the same value, so use reneighbor for now */
-        if ( renbr )
-        {
-            lists[FAR_NBRS]->format = FULL_LIST;
-            workspace->H->format = SYM_FULL_MATRIX;
-        }
-        else
-        {
-            lists[FAR_NBRS]->format = HALF_LIST;
-            workspace->H->format = SYM_HALF_MATRIX;
-        }
+//        if ( renbr )
+//        {
+//            lists[FAR_NBRS]->format = FULL_LIST;
+//            workspace->H->format = SYM_FULL_MATRIX;
+//        }
+//        else
+//        {
+//            lists[FAR_NBRS]->format = HALF_LIST;
+//            workspace->H->format = SYM_HALF_MATRIX;
+//        }
     }
 
     for ( i = 0; i < system->n; i++ )
@@ -135,16 +135,16 @@ void Velocity_Verlet_Nose_Hoover_NVT_Klein( reax_system* system,
         /* HACK: currently required that preconditioner (re)computation step
          * and reneighbor step (i.e., (re)construct far nbr list)
          * are the same value, so use reneighbor for now */
-        if ( renbr )
-        {
-            lists[FAR_NBRS]->format = FULL_LIST;
-            workspace->H->format = SYM_FULL_MATRIX;
-        }
-        else
-        {
-            lists[FAR_NBRS]->format = HALF_LIST;
-            workspace->H->format = SYM_HALF_MATRIX;
-        }
+//        if ( renbr )
+//        {
+//            lists[FAR_NBRS]->format = FULL_LIST;
+//            workspace->H->format = SYM_FULL_MATRIX;
+//        }
+//        else
+//        {
+//            lists[FAR_NBRS]->format = HALF_LIST;
+//            workspace->H->format = SYM_HALF_MATRIX;
+//        }
     }
 
     for ( i = 0; i < system->n; i++ )
@@ -246,16 +246,16 @@ void Velocity_Verlet_Berendsen_NVT( reax_system* system,
         /* HACK: currently required that preconditioner (re)computation step
          * and reneighbor step (i.e., (re)construct far nbr list)
          * are the same value, so use reneighbor for now */
-        if ( renbr )
-        {
-            lists[FAR_NBRS]->format = FULL_LIST;
-            workspace->H->format = SYM_FULL_MATRIX;
-        }
-        else
-        {
-            lists[FAR_NBRS]->format = HALF_LIST;
-            workspace->H->format = SYM_HALF_MATRIX;
-        }
+//        if ( renbr )
+//        {
+//            lists[FAR_NBRS]->format = FULL_LIST;
+//            workspace->H->format = SYM_FULL_MATRIX;
+//        }
+//        else
+//        {
+//            lists[FAR_NBRS]->format = HALF_LIST;
+//            workspace->H->format = SYM_HALF_MATRIX;
+//        }
     }
 
     /* velocity verlet, 1st part */
@@ -353,16 +353,16 @@ void Velocity_Verlet_Berendsen_NPT( reax_system* system,
         /* HACK: currently required that preconditioner (re)computation step
          * and reneighbor step (i.e., (re)construct far nbr list)
          * are the same value, so use reneighbor for now */
-        if ( renbr )
-        {
-            lists[FAR_NBRS]->format = FULL_LIST;
-            workspace->H->format = SYM_FULL_MATRIX;
-        }
-        else
-        {
-            lists[FAR_NBRS]->format = HALF_LIST;
-            workspace->H->format = SYM_HALF_MATRIX;
-        }
+//        if ( renbr )
+//        {
+//            lists[FAR_NBRS]->format = FULL_LIST;
+//            workspace->H->format = SYM_FULL_MATRIX;
+//        }
+//        else
+//        {
+//            lists[FAR_NBRS]->format = HALF_LIST;
+//            workspace->H->format = SYM_HALF_MATRIX;
+//        }
     }
 
     /* velocity verlet, 1st part */
diff --git a/PuReMD/src/linear_solvers.c b/PuReMD/src/linear_solvers.c
index 4a7b258e0102c6c0e50246684234d79f8b09d427..395c6934d98b9bb9c8bf46498b8401b57a739a19 100644
--- a/PuReMD/src/linear_solvers.c
+++ b/PuReMD/src/linear_solvers.c
@@ -188,7 +188,7 @@ real setup_sparse_approx_inverse( reax_system *system, simulation_data *data, st
     {
         n_local += A->end[i] - A->start[i];
     }
-    s_local = (int) (12.0 * log2(n_local * nprocs));
+    s_local = (int) (12.0 * (log2(n_local) + log2(nprocs)));
     
     t_start = MPI_Wtime();
     MPI_Allreduce( &n_local, &n, 1, MPI_INT, MPI_SUM, comm );