Index: include/physics/diff_qoi.h
===================================================================
--- include/physics/diff_qoi.h	(revision 6062)
+++ include/physics/diff_qoi.h	(working copy)
@@ -75,37 +75,13 @@
   virtual void clear_qoi () {}
 
   /**
-   * Executes a postprocessing loop over all elements, and if
-   * \p postprocess_sides is true over all sides.
-   */
-  virtual void postprocess () = 0;
-
-  /**
-   * If \p postprocess_sides is true (it is false by default), the
-   * postprocessing loop will loop over all sides as well as all
-   * elements.
-   */
-  bool postprocess_sides;
-
-  /**
    * If \p assemble_qoi_sides is true (it is false by default), the
    * assembly loop for a quantity of interest or its derivatives will
    * loop over all sides as well as all elements.
    */
   bool assemble_qoi_sides;
-
-  /**
-   * Does any work that needs to be done on \p elem in a postprocessing loop.
-   */
-  virtual void element_postprocess (DiffContext &) {}
  
   /**
-   * Does any work that needs to be done on \p side of \p elem in a
-   * postprocessing loop.
-   */
-  virtual void side_postprocess (DiffContext &) {}
- 
-  /**
    * Does any work that needs to be done on \p elem in a quantity of
    * interest assembly loop, outputting to elem_qoi.
    *
Index: include/systems/diff_system.h
===================================================================
--- include/systems/diff_system.h	(revision 6062)
+++ include/systems/diff_system.h	(working copy)
@@ -179,6 +179,29 @@
   virtual AutoPtr<DiffContext> build_context();
 
   /**
+   * Executes a postprocessing loop over all elements, and if
+   * \p postprocess_sides is true over all sides.
+   */
+  virtual void postprocess (){}
+
+  /**
+   * Does any work that needs to be done on \p elem in a postprocessing loop.
+   */
+  virtual void element_postprocess (DiffContext &) {}
+  
+  /**
+   * Does any work that needs to be done on \p side of \p elem in a
+   * postprocessing loop.
+   */
+  virtual void side_postprocess (DiffContext &) {}
+
+  /**
+   * If \p postprocess_sides is true (it is false by default), the
+   * postprocessing loop will loop over all sides as well as all elements.
+   */
+  bool postprocess_sides;
+
+  /**
    * Set print_residual_norms to true to print |U| whenever it is
    * used in an assembly() call
    */
Index: include/systems/diff_context.h
===================================================================
--- include/systems/diff_context.h	(revision 6062)
+++ include/systems/diff_context.h	(working copy)
@@ -67,12 +67,6 @@
   virtual ~DiffContext ();
 
   /**
-   * If \p postprocess_sides is true (it is false by default), the
-   * postprocessing loop will loop over all sides as well as all elements.
-   */
-  bool postprocess_sides;
-
-  /**
    * Gives derived classes the opportunity to reinitialize data (FE objects in
    * FEMSystem, for example) needed for an interior integration at a new point
    * within a timestep
Index: src/physics/diff_qoi.C
===================================================================
--- src/physics/diff_qoi.C	(revision 6062)
+++ src/physics/diff_qoi.C	(working copy)
@@ -22,7 +22,6 @@
 {
 
 DifferentiableQoI::DifferentiableQoI () :
-  postprocess_sides(false),
   assemble_qoi_sides(false)
 {
 }
Index: src/systems/fem_system.C
===================================================================
--- src/systems/fem_system.C	(revision 6062)
+++ src/systems/fem_system.C	(working copy)
@@ -290,8 +290,7 @@
      * constructor to set context
      */
     explicit
-    PostprocessContributions(FEMSystem &sys,
-			     DifferentiableQoI &qoi) : _sys(sys), _qoi(qoi) {}
+    PostprocessContributions(FEMSystem &sys) : _sys(sys) {}
 
     /**
      * operator() for use with Threads::parallel_for().
@@ -312,14 +311,14 @@
           if (_sys.fe_reinit_during_postprocess)
             _femcontext.elem_fe_reinit();
 
-          _qoi.element_postprocess(_femcontext);
+          _sys.element_postprocess(_femcontext);
 
           for (_femcontext.side = 0;
                _femcontext.side != _femcontext.elem->n_sides();
                ++_femcontext.side)
             {
               // Don't compute on non-boundary sides unless requested
-              if (!_qoi.postprocess_sides ||
+              if (!_sys.postprocess_sides ||
                   (!_sys.compute_internal_sides &&
                    _femcontext.elem->neighbor(_femcontext.side) != NULL))
                 continue;
@@ -328,7 +327,7 @@
               if (_sys.fe_reinit_during_postprocess)
                 _femcontext.side_fe_reinit();
 
-              _qoi.side_postprocess(_femcontext);
+              _sys.side_postprocess(_femcontext);
             }
         }
     }
@@ -336,7 +335,6 @@
   private:
 
     FEMSystem& _sys;
-    DifferentiableQoI& _qoi;
   };
 
   class QoIContributions
@@ -703,7 +701,7 @@
   // Loop over every active mesh element on this processor
   Threads::parallel_for(elem_range.reset(mesh.active_local_elements_begin(),
                                          mesh.active_local_elements_end()),
-                        PostprocessContributions(*this, *(this->diff_qoi)));
+                        PostprocessContributions(*this));
 
   STOP_LOG("postprocess()", "FEMSystem");
 }
