      }
      // compute and register the product, then return the new tag
      catch(const std::out_of_range& e) {
+Index: applications/dmrg/mps/framework/dmrg/models/op_handler.h
+===================================================================
+--- applications/dmrg/mps/framework/dmrg/models/op_handler.h	(revision 7814)
++++ applications/dmrg/mps/framework/dmrg/models/op_handler.h	(revision 7819)
+@@ -143,6 +143,7 @@
+     typedef TagHandler<Matrix, SymmGroup> base;
+     typedef typename OPTable<Matrix, SymmGroup>::tag_type tag_type;
+     typedef typename base::op_t op_t;
++    typedef typename base::pair_map_it_t pair_map_it_t;
+ 
+ public:
+ 
+Index: applications/dmrg/mps/framework/dmrg/sim/sim.hpp
+===================================================================
+--- applications/dmrg/mps/framework/dmrg/sim/sim.hpp	(revision 7814)
++++ applications/dmrg/mps/framework/dmrg/sim/sim.hpp	(revision 7819)
+@@ -148,12 +148,8 @@
+ {
+     std::ostringstream oss;
+     oss.str("");
+-#if defined(__xlC__) || defined(__FCC_VERSION)
+     typename status_type::const_iterator match = status.find("sweep");
+     oss << "/spectrum/iteration/" << match->second;
+-#else
+-    oss << "/spectrum/iteration/" << status.at("sweep");
+-#endif
+     return oss.str();
+ }
+ 
 Index: applications/dmrg/mps/framework/dmrg/mp_tensors/mps_initializers.h
 ===================================================================
---- applications/dmrg/mps/framework/dmrg/mp_tensors/mps_initializers.h	(revision 7818)
+--- applications/dmrg/mps/framework/dmrg/mp_tensors/mps_initializers.h	(revision 7814)
 +++ applications/dmrg/mps/framework/dmrg/mp_tensors/mps_initializers.h	(revision 7819)
 @@ -462,7 +462,7 @@
          std::vector<boost::tuple<charge, size_t> > state(mps.length());

Index: applications/dmrg/mps/framework/dmrg/models/op_handler.h
===================================================================
--- applications/dmrg/mps/framework/dmrg/models/op_handler.h	(revision 7816)
+++ applications/dmrg/mps/framework/dmrg/models/op_handler.h	(revision 7817)
@@ -143,6 +143,7 @@
     typedef TagHandler<Matrix, SymmGroup> base;
     typedef typename OPTable<Matrix, SymmGroup>::tag_type tag_type;
     typedef typename base::op_t op_t;
+    typedef typename base::pair_map_it_t pair_map_it_t;
 
 public:
 
Index: applications/dmrg/mps/framework/dmrg/models/op_handler.hpp
===================================================================
--- applications/dmrg/mps/framework/dmrg/models/op_handler.hpp	(revision 7815)
+++ applications/dmrg/mps/framework/dmrg/models/op_handler.hpp	(revision 7816)
@@ -94,14 +94,10 @@
 
     // return tag of product, if already there

-        mps = state_mps<Matrix>(state, phys_dims, site_type);
+        mps = state_mps<Matrix, SymmGroup>(state, phys_dims, site_type);
     }
     
 private:
@@ -497,7 +497,7 @@
         std::vector<boost::tuple<charge, size_t> > state(mps.length());
