Index: src/Parser/FormatParser_Parameters.cpp
===================================================================
--- src/Parser/FormatParser_Parameters.cpp	(revision f758dd8abf6c4577aedad2b0a76999a202061c35)
+++ src/Parser/FormatParser_Parameters.cpp	(revision 7f570c6517b39d5c867f97f951a6d8b7300e1cdb)
@@ -20,5 +20,12 @@
 #include "CodePatterns/MemDebug.hpp"
 
+#include <iostream>
+#include <boost/algorithm/string.hpp>
+#include <boost/tokenizer.hpp>
+#include <sstream>
 #include <string>
+
+#include "CodePatterns/Assert.hpp"
+#include "CodePatterns/Log.hpp"
 
 #include "Parameters/Parameter.hpp"
@@ -106,2 +113,85 @@
   return storage->getByName(_name);
 }
+
+/** Output operator for the contents of FormatParser_Parameters::params.
+ *
+ * @param ost output stream
+ * @param params reference to FormatParser_Parameters containing params.
+ * @return reference to output stream for concatenation
+ */
+std::ostream & operator << (std::ostream& ost, const FormatParser_Parameters &params)
+{
+  // this is ugly, but with boost::any to safeguard const-ness is plain impossible
+  std::ostringstream output;
+  ASSERT(params.storage != NULL,
+      "operator<<(FormatParser_Parameters) - storage is NULL.");
+  for (ParameterStorage::const_iterator iter = params.storage->getBeginIter();
+      iter != params.storage->getEndIter();
+      ++iter)
+    output << iter->first
+           <<  "=" << iter->second->get() << ";";
+  ost << output.str();
+  return ost;
+}
+
+/** Input operator for a list of parameters to place into \a params.
+ *
+ * @param ist input stream
+ * @param params parameters to parse into
+ * @return input stream for concatenation
+ */
+std::istream & operator >> (std::istream& ist, FormatParser_Parameters &params)
+{
+  typedef boost::tokenizer<boost::char_separator<char> >
+      tokenizer;
+  boost::char_separator<char> semicolonsep(";");
+  boost::char_separator<char> equalitysep("=");
+  boost::char_separator<char> ticksep("\"");
+  std::string line;
+  std::getline( ist, line );
+  //DoLog(0) && (Log() << Verbose(0) << "INFO: full line of parameters is '" << line << "'" << std::endl);
+  tokenizer tokens(line, semicolonsep);
+  ASSERT(tokens.begin() != tokens.end(),
+      "operator<< on FormatParser_Parameters - empty string, need at least ';' in line "+line+"!");
+  for (tokenizer::iterator tok_iter = tokens.begin();
+        tok_iter != tokens.end(); ++tok_iter) {
+    //LOG(2, "INFO: (key,value) pair is: " << *tok_iter << ".");
+    tokenizer paramtokens(*tok_iter, equalitysep);
+    if (paramtokens.begin() != paramtokens.end()) {
+      tokenizer::iterator tok_paramiter = paramtokens.begin();
+      tokenizer::iterator tok_valueiter = tok_paramiter;
+      tokenizer::iterator tok_checkiter = ++tok_valueiter;
+      ++tok_checkiter;
+      LOG(3, "INFO: key is '" << *tok_paramiter << "', value is '" << *tok_valueiter << "'.");
+      // TODO: throw exception instead of ASSERT
+      ASSERT(tok_paramiter != paramtokens.end(),
+          "operator<< on FormatParser_Parameters - missing value before ' =' in token "+*tok_iter+"!");
+      ASSERT(tok_valueiter != paramtokens.end(),
+          "operator<< on FormatParser_Parameters - missing value after ' =' in token "+*tok_iter+"!");
+      ASSERT(tok_checkiter == paramtokens.end(),
+          "operator<< on FormatParser_Parameters - still more tokens after ' =' in token "+*tok_iter+":"
+          +*tok_checkiter+"!");
+      std::string key(*tok_paramiter);
+      std::string value(*tok_valueiter);
+      boost::trim(key);
+      boost::trim(value);
+      tokenizer ticklesstokens(value, ticksep);
+      ASSERT(ticklesstokens.begin() != ticklesstokens.end(),
+          "operator<< on FormatParser_Parameters - no tokens present after removing ticks in token "+*tok_valueiter+"!");
+      std::stringstream valuestream(*(ticklesstokens.begin()));
+      //LOG(2, "INFO: Token pair is " << key << "," << valuestream.str());
+
+      // TODO: throw exception instead of DoeLog()
+      ASSERT(params.haveParameter(key),
+          "operator >> on FormatParser_Parameters - unknown parameter name '"
+          +key+"' with value "+valuestream.str()+"!");
+      if (params.haveParameter(key)) {
+        Parameter *instance = params.getParameter(key);
+        instance->set(valuestream.str());
+      }
+    } else {
+      ist.setstate(std::ios::eofbit);
+    }
+  }
+  return ist;
+}
Index: src/Parser/FormatParser_Parameters.hpp
===================================================================
--- src/Parser/FormatParser_Parameters.hpp	(revision f758dd8abf6c4577aedad2b0a76999a202061c35)
+++ src/Parser/FormatParser_Parameters.hpp	(revision 7f570c6517b39d5c867f97f951a6d8b7300e1cdb)
@@ -14,4 +14,6 @@
 #endif
 
+#include <iosfwd>
+
 #include "CodePatterns/Clone.hpp"
 
@@ -27,4 +29,6 @@
 class FormatParser_Parameters : public Clone<FormatParser_Parameters>
 {
+  //!> allow operator access to storage for easier printing.
+  friend std::ostream & operator << (std::ostream& ost, const FormatParser_Parameters &params);
 public:
   FormatParser_Parameters();
@@ -45,4 +49,8 @@
 };
 
+std::ostream & operator << (std::ostream& ost, const FormatParser_Parameters &params);
+
+std::istream & operator >> (std::istream& ist, FormatParser_Parameters &params);
+
 
 #endif /* FORMATPARSER_PARAMETERS_HPP_ */
Index: src/Parser/MpqcParser_Parameters.cpp
===================================================================
--- src/Parser/MpqcParser_Parameters.cpp	(revision f758dd8abf6c4577aedad2b0a76999a202061c35)
+++ src/Parser/MpqcParser_Parameters.cpp	(revision 7f570c6517b39d5c867f97f951a6d8b7300e1cdb)
@@ -18,14 +18,11 @@
 #endif
 
-#include <iostream>
-#include <boost/tokenizer.hpp>
+#include "CodePatterns/MemDebug.hpp"
+
 #include <string>
-
-#include "CodePatterns/MemDebug.hpp"
 
 #include "CodePatterns/Log.hpp"
 
 #include "MpqcParser.hpp"
-
 #include "MpqcParser_Parameters.hpp"
 
@@ -182,83 +179,4 @@
 }
 
-
-/** Output operator for the contents of MpqcParser_Parameters::params.
- *
- * @param ost output stream
- * @param params reference to MpqcParser_Parameters containing params.
- * @return reference to output stream for concatenation
- */
-std::ostream & operator << (std::ostream& ost, const MpqcParser_Parameters &params)
-{
-  // this is ugly, but with boost::any to safeguard const-ness is plain impossible
-  std::ostringstream output;
-  for (size_t param = (enum MpqcParser_Parameters::Parameters)0;
-      param < (size_t)MpqcParser_Parameters::unknownParam; ++param)
-    output << params.getParameterName((enum MpqcParser_Parameters::Parameters)param)
-           <<  "=" << params.getParameter((enum MpqcParser_Parameters::Parameters)param) << ";";
-  ost << output.str();
-  return ost;
-}
-
-/** Input operator for a list of parameters to place into \a params.
- *
- * @param ist input stream
- * @param params parameters to parse into
- * @return input stream for concatenation
- */
-std::istream & operator >> (std::istream& ist, MpqcParser_Parameters &params)
-{
-  typedef boost::tokenizer<boost::char_separator<char> >
-      tokenizer;
-  boost::char_separator<char> semicolonsep(";");
-  boost::char_separator<char> equalitysep(" =");
-  boost::char_separator<char> ticksep("\"");
-  std::string line;
-  std::getline( ist, line );
-  //DoLog(0) && (Log() << Verbose(0) << "INFO: full line of parameters is '" << line << "'" << std::endl);
-  tokenizer tokens(line, semicolonsep);
-  ASSERT(tokens.begin() != tokens.end(),
-      "operator<< on MpqcParser_Parameters - empty string, need at least ';' in line "+line+"!");
-  for (tokenizer::iterator tok_iter = tokens.begin();
-        tok_iter != tokens.end(); ++tok_iter) {
-    tokenizer paramtokens(*tok_iter, equalitysep);
-    if (paramtokens.begin() != paramtokens.end()) {
-      tokenizer::iterator tok_paramiter = paramtokens.begin();
-      tokenizer::iterator tok_valueiter = tok_paramiter;
-      tokenizer::iterator tok_checkiter = ++tok_valueiter;
-      ++tok_checkiter;
-      // TODO: throw exception instead of ASSERT
-      ASSERT(tok_paramiter != paramtokens.end(),
-          "operator<< on MpqcParser_Parameters - missing value before ' =' in token "+*tok_iter+"!");
-      ASSERT(tok_valueiter != paramtokens.end(),
-          "operator<< on MpqcParser_Parameters - missing value after ' =' in token "+*tok_iter+"!");
-      ASSERT(tok_checkiter == paramtokens.end(),
-          "operator<< on MpqcParser_Parameters - still more tokens after ' =' in token "+*tok_iter+":"
-          +*tok_checkiter+"!");
-      std::stringstream keystream(*tok_paramiter);
-      std::string key;
-      keystream >> ws >> key;
-      tokenizer ticklesstokens(*tok_valueiter, ticksep);
-      ASSERT(ticklesstokens.begin() != ticklesstokens.end(),
-          "operator<< on MpqcParser_Parameters - no tokens present after removing ticks in token "+*tok_valueiter+"!");
-      std::stringstream valuestream(*(ticklesstokens.begin()));
-      DoLog(2) && (Log() << Verbose(2)
-          << "INFO: Token pair is " << key << "," << valuestream.str() << std::endl);
-
-      // TODO: throw exception instead of DoeLog()
-      ASSERT(params.haveParameter(key),
-          "operator >> on MpqcParser_Parameters - unknown parameter name '"
-          +key+"' with value "+valuestream.str()+"!");
-      if (params.haveParameter(key)) {
-        Parameter *instance = params.FormatParser_Parameters::getParameter(key);
-        instance->set(valuestream.str());
-      }
-    } else {
-      ist.setstate(std::ios::eofbit);
-    }
-  }
-  return ist;
-}
-
 /** Checks whether all elements in the world also have parameters in the basis.
  *
Index: src/Parser/MpqcParser_Parameters.hpp
===================================================================
--- src/Parser/MpqcParser_Parameters.hpp	(revision f758dd8abf6c4577aedad2b0a76999a202061c35)
+++ src/Parser/MpqcParser_Parameters.hpp	(revision 7f570c6517b39d5c867f97f951a6d8b7300e1cdb)
@@ -14,5 +14,4 @@
 #endif
 
-#include <iosfwd>
 #include <list>
 #include <map>
@@ -124,7 +123,3 @@
 };
 
-std::ostream & operator << (std::ostream& ost, const MpqcParser_Parameters &params);
-
-std::istream & operator >> (std::istream& ist, MpqcParser_Parameters &params);
-
 #endif /* MPQCPARSER_PARAMETERS_HPP_ */
Index: src/Parser/Psi3Parser_Parameters.cpp
===================================================================
--- src/Parser/Psi3Parser_Parameters.cpp	(revision f758dd8abf6c4577aedad2b0a76999a202061c35)
+++ src/Parser/Psi3Parser_Parameters.cpp	(revision 7f570c6517b39d5c867f97f951a6d8b7300e1cdb)
@@ -18,10 +18,9 @@
 #endif
 
-#include <iostream>
-#include <boost/tokenizer.hpp>
+#include "CodePatterns/MemDebug.hpp"
+
 #include <string>
 
-#include "CodePatterns/MemDebug.hpp"
-
+#include "CodePatterns/Assert.hpp"
 #include "CodePatterns/Log.hpp"
 
@@ -254,103 +253,4 @@
 }
 
-///** Getter for name of a specific Parameter.
-// *
-// * @param param index among enum Theory
-// * @return name of the desired Theory
-// */
-//const std::string &Psi3Parser_Parameters::getTheoryName(const enum Theory theory) const
-//{
-//  return ValidTheories[theory];
-//}
-//
-///** Getter for the name of specific of IntegrationMethod.
-// *
-// * @param param index among enum IntegrationMethod
-// * @return value of the desired IntegrationMethod
-// */
-//const std::string &Psi3Parser_Parameters::getIntegrationMethodName(const enum IntegrationMethod integration) const
-//{
-//  return ValidIntegrationMethods[integration];
-//}
-
-
-/** Output operator for the contents of Psi3Parser_Parameters::params.
- *
- * @param ost output stream
- * @param params reference to Psi3Parser_Parameters containing params.
- * @return reference to output stream for concatenation
- */
-std::ostream & operator << (std::ostream& ost, const Psi3Parser_Parameters &params)
-{
-  // this is ugly, but with boost::any to safeguard const-ness is plain impossible
-  std::ostringstream output;
-  for (size_t param = (enum Psi3Parser_Parameters::Parameters)0;
-      param < (size_t)Psi3Parser_Parameters::unknownParam; ++param)
-    output << params.getParameterName((enum Psi3Parser_Parameters::Parameters)param)
-           <<  "=" << params.getParameter((enum Psi3Parser_Parameters::Parameters)param) << ";";
-  ost << output.str();
-  return ost;
-}
-
-/** Input operator for a list of parameters to place into \a params.
- *
- * @param ist input stream
- * @param params parameters to parse into
- * @return input stream for concatenation
- */
-std::istream & operator >> (std::istream& ist, Psi3Parser_Parameters &params)
-{
-  typedef boost::tokenizer<boost::char_separator<char> >
-      tokenizer;
-  boost::char_separator<char> semicolonsep(";");
-  boost::char_separator<char> equalitysep(" =");
-  boost::char_separator<char> ticksep("\"");
-  std::string line;
-  std::getline( ist, line );
-  //DoLog(0) && (Log() << Verbose(0) << "INFO: full line of parameters is '" << line << "'" << std::endl);
-  tokenizer tokens(line, semicolonsep);
-  ASSERT(tokens.begin() != tokens.end(),
-      "operator<< on Psi3Parser_Parameters - empty string, need at least ';' in line "+line+"!");
-  for (tokenizer::iterator tok_iter = tokens.begin();
-        tok_iter != tokens.end(); ++tok_iter) {
-    tokenizer paramtokens(*tok_iter, equalitysep);
-    if (paramtokens.begin() != paramtokens.end()) {
-      tokenizer::iterator tok_paramiter = paramtokens.begin();
-      tokenizer::iterator tok_valueiter = tok_paramiter;
-      tokenizer::iterator tok_checkiter = ++tok_valueiter;
-      ++tok_checkiter;
-      // TODO: throw exception instead of ASSERT
-      ASSERT(tok_paramiter != paramtokens.end(),
-          "operator<< on Psi3Parser_Parameters - missing value before ' =' in token "+*tok_iter+"!");
-      ASSERT(tok_valueiter != paramtokens.end(),
-          "operator<< on Psi3Parser_Parameters - missing value after ' =' in token "+*tok_iter+"!");
-      ASSERT(tok_checkiter == paramtokens.end(),
-          "operator<< on Psi3Parser_Parameters - still more tokens after ' =' in token "+*tok_iter+":"
-          +*tok_checkiter+"!");
-      std::stringstream keystream(*tok_paramiter);
-      std::string key;
-      keystream >> ws >> key;
-      tokenizer ticklesstokens(*tok_valueiter, ticksep);
-      ASSERT(ticklesstokens.begin() != ticklesstokens.end(),
-          "operator<< on Psi3Parser_Parameters - no tokens present after removing ticks in token "+*tok_valueiter+"!");
-      std::stringstream valuestream(*(ticklesstokens.begin()));
-      DoLog(2) && (Log() << Verbose(2)
-          << "INFO: Token pair is " << key << "," << valuestream.str() << std::endl);
-
-      // TODO: throw exception instead of DoeLog()
-      ASSERT(params.haveParameter(key),
-          "operator >> on Psi3Parser_Parameters - unknown parameter name '"
-          +key+"' with value "+valuestream.str()+"!");
-      if (params.haveParameter(key)) {
-        Parameter *instance = params.FormatParser_Parameters::getParameter(key);
-        instance->set(valuestream.str());
-      }
-    } else {
-      ist.setstate(std::ios::eofbit);
-    }
-  }
-  return ist;
-}
-
 /** Checks whether all elements in the world also have parameters in the basis.
  *
Index: src/Parser/Psi3Parser_Parameters.hpp
===================================================================
--- src/Parser/Psi3Parser_Parameters.hpp	(revision f758dd8abf6c4577aedad2b0a76999a202061c35)
+++ src/Parser/Psi3Parser_Parameters.hpp	(revision 7f570c6517b39d5c867f97f951a6d8b7300e1cdb)
@@ -14,5 +14,4 @@
 #endif
 
-#include <iosfwd>
 #include <list>
 #include <map>
@@ -20,5 +19,4 @@
 
 #include "CodePatterns/Clone.hpp"
-#include "CodePatterns/Log.hpp"
 
 #include "Parser/FormatParser_Parameters.hpp"
@@ -208,7 +206,3 @@
 };
 
-std::ostream & operator << (std::ostream& ost, const Psi3Parser_Parameters &params);
-
-std::istream & operator >> (std::istream& ist, Psi3Parser_Parameters &params);
-
 #endif /* PSI3PARSER_PARAMETERS_HPP_ */
