Index: src/Parser/Makefile.am
===================================================================
--- src/Parser/Makefile.am	(revision 9cff8b40dbce0e08a022e7778ac2e12db6f6b9b2)
+++ src/Parser/Makefile.am	(revision 61d69a4cb73f0b86aacc2d6ca57bf28462918da9)
@@ -12,4 +12,5 @@
   FormatParserStorage.cpp \
   MpqcParser.cpp \
+  MpqcParser_Parameters.cpp \
   PcpParser.cpp \
   PdbAtomInfoContainer.cpp \
@@ -24,4 +25,5 @@
   FormatParserStorage.hpp \
   MpqcParser.hpp \
+  MpqcParser_Parameters.hpp \
   PcpParser.hpp \
   PdbAtomInfoContainer.hpp \
Index: src/Parser/MpqcParser.cpp
===================================================================
--- src/Parser/MpqcParser.cpp	(revision 9cff8b40dbce0e08a022e7778ac2e12db6f6b9b2)
+++ src/Parser/MpqcParser.cpp	(revision 61d69a4cb73f0b86aacc2d6ca57bf28462918da9)
@@ -41,7 +41,5 @@
  *
  */
-MpqcParser::MpqcParser() :
-  HessianPresent(false),
-  theory(MBPT2)
+MpqcParser::MpqcParser()
 {}
 
@@ -115,5 +113,5 @@
   for (vector<atom *>::iterator runner = allatoms.begin();runner != allatoms.end(); ++runner)
     center += (*runner)->getPosition();
-  center.Scale(1./allatoms.size());
+  center.Scale(1./(double)allatoms.size());
 
   // first without hessian
@@ -123,53 +121,57 @@
     *file << "% Created by MoleCuilder" << endl;
     *file << "mpqc: (" << endl;
-    *file << "\tsavestate = no" << endl;
-    *file << "\tdo_gradient = yes" << endl;
-    if (HessianPresent) {
+    *file << "\tsavestate = " << params.getString(MpqcParser_Parameters::savestateParam) << endl;
+    *file << "\tdo_gradient = " << params.getString(MpqcParser_Parameters::do_gradientParam) << endl;
+    if (params.getBool(MpqcParser_Parameters::HessianParam)) {
       *file << "\tfreq<MolecularFrequencies>: (" << endl;
       *file << "\t\tmolecule=$:molecule" << endl;
       *file << "\t)" << endl;
     }
-    switch (theory) {
-      case CLHF:
-        *file << "\tmole<CLHF>: (" << endl;
-        *file << "\t\tmolecule = $:molecule" << endl;
-        *file << "\t\tbasis = $:basis" << endl;
-        *file << "\t\tmemory = 16000000" << endl;
-        *file << "\t)" << endl;
-        break;
-      case CLKS:
-        *file << "\tmole<CLKS>: (" << endl;
+    switch (params.getTheory()) {
+      case MpqcParser_Parameters::CLHF:
+        *file << "\tmole<" << params.getString(MpqcParser_Parameters::theoryParam) << ">: (" << endl;
+        *file << "\t\tmolecule = $:molecule" << endl;
+        *file << "\t\tbasis = $:basis" << endl;
+        *file << "\t\tmaxiter = " << toString(params.getInt(MpqcParser_Parameters::maxiterParam))<< endl;
+        *file << "\t\tmemory = " << toString(params.getInt(MpqcParser_Parameters::memoryParam)) << endl;
+        *file << "\t)" << endl;
+        break;
+      case MpqcParser_Parameters::CLKS:
+        *file << "\tmole<" << params.getString(MpqcParser_Parameters::theoryParam) << ">: (" << endl;
         *file << "\t\tfunctional<StdDenFunctional>:(name=B3LYP)" << endl;
         *file << "\t\tmolecule = $:molecule" << endl;
         *file << "\t\tbasis = $:basis" << endl;
-        *file << "\t\tmemory = 16000000" << endl;
-        *file << "\t)" << endl;
-        break;
-      case MBPT2:
-        *file << "\tmole<MBPT2>: (" << endl;
-        *file << "\t\tbasis = $:basis" << endl;
-        *file << "\t\tmolecule = $:molecule" << endl;
+        *file << "\t\tmaxiter = " << toString(params.getInt(MpqcParser_Parameters::maxiterParam))<< endl;
+        *file << "\t\tmemory = " << toString(params.getInt(MpqcParser_Parameters::memoryParam)) << endl;
+        *file << "\t)" << endl;
+        break;
+      case MpqcParser_Parameters::MBPT2:
+        *file << "\tmole<" << params.getString(MpqcParser_Parameters::theoryParam) << ">: (" << endl;
+        *file << "\t\tbasis = $:basis" << endl;
+        *file << "\t\tmolecule = $:molecule" << endl;
+        *file << "\t\tmemory = " << toString(params.getInt(MpqcParser_Parameters::memoryParam)) << endl;
         *file << "\t\treference<CLHF>: (" << endl;
-        *file << "\t\t\tmaxiter = 1000" << endl;
+        *file << "\t\t\tmaxiter = " << toString(params.getInt(MpqcParser_Parameters::maxiterParam))<< endl;
         *file << "\t\t\tbasis = $:basis" << endl;
         *file << "\t\t\tmolecule = $:molecule" << endl;
+        *file << "\t\t\tmemory = " << toString(params.getInt(MpqcParser_Parameters::memoryParam)) << endl;
         *file << "\t\t)" << endl;
         *file << "\t)" << endl;
         break;
-      case MBPT2_R12:
-        *file << "\tmole<MBPT2_R12>: (" << endl;
+      case MpqcParser_Parameters::MBPT2_R12:
+        *file << "\tmole<" << params.getString(MpqcParser_Parameters::theoryParam) << ">: (" << endl;
         *file << "\t\tmolecule = $:molecule" << endl;
         *file << "\t\tbasis = $:basis" << endl;
         *file << "\t\taux_basis = $:abasis" << endl;
-        *file << "\t\tstdapprox = \"A'\"" << endl;
-        *file << "\t\tnfzc = 1" << endl;
-        *file << "\t\tmemory = 16000000" << endl;
+        *file << "\t\tstdapprox = \"" << params.getString(MpqcParser_Parameters::stdapproxParam) << "\"" << endl;
+        *file << "\t\tnfzc = " << toString(params.getInt(MpqcParser_Parameters::nfzcParam)) << endl;
+        *file << "\t\tmemory = " << toString(params.getInt(MpqcParser_Parameters::memoryParam)) << endl;
         *file << "\t\tintegrals<IntegralCints>:()" << endl;
         *file << "\t\treference<CLHF>: (" << endl;
         *file << "\t\t\tmolecule = $:molecule" << endl;
         *file << "\t\t\tbasis = $:basis" << endl;
-        *file << "\t\t\tmaxiter = 1000" << endl;
-        *file << "\t\t\tmemory = 16000000" << endl;
-        *file << "\t\t\tintegrals<IntegralCints>:()" << endl;
+        *file << "\t\t\tmaxiter = " << toString(params.getInt(MpqcParser_Parameters::maxiterParam)) << endl;
+        *file << "\t\t\tmemory = " << toString(params.getInt(MpqcParser_Parameters::memoryParam)) << endl;
+        *file << "\t\t\tintegrals<" << params.getString(MpqcParser_Parameters::integrationParam) << ">:()" << endl;
         *file << "\t\t)" << endl;
         *file << "\t)" << endl;
@@ -191,11 +193,11 @@
     *file << ")" << endl;
     *file << "basis<GaussianBasisSet>: (" << endl;
-    *file << "\tname = \"" << World::getInstance().getConfig()->basis << "\"" << endl;
+    *file << "\tname = \"" << params.getString(MpqcParser_Parameters::basisParam) << "\"" << endl;
     *file << "\tmolecule = $:molecule" << endl;
     *file << ")" << endl;
-    if (theory == MBPT2_R12) {
+    if (params.getTheory() == MpqcParser_Parameters::MBPT2_R12) {
       *file << "% auxiliary basis set specification" << endl;
       *file << "\tabasis<GaussianBasisSet>: (" << endl;
-      *file << "\tname = \"aug-cc-pVDZ\"" << endl;
+      *file << "\tname = \"" << params.getString(MpqcParser_Parameters::aux_basisParam) << "\"" << endl;
       *file << "\tmolecule = $:molecule" << endl;
       *file << ")" << endl;
@@ -204,17 +206,2 @@
 }
 
-/** Sets whether hessian is desired or not
- * \param hessian statement
- */
-void MpqcParser::setHessian(bool hessian)
-{
-  HessianPresent = hessian;
-}
-
-/** Sets the desired level of solving theory to use
- * \param _theory shorthand of the theory
- */
-void MpqcParser::setTheory(enum Theory _theory)
-{
-  theory = _theory;
-}
Index: src/Parser/MpqcParser.hpp
===================================================================
--- src/Parser/MpqcParser.hpp	(revision 9cff8b40dbce0e08a022e7778ac2e12db6f6b9b2)
+++ src/Parser/MpqcParser.hpp	(revision 61d69a4cb73f0b86aacc2d6ca57bf28462918da9)
@@ -16,4 +16,5 @@
 
 #include "FormatParser.hpp"
+#include "MpqcParser_Parameters.hpp"
 
 #include <iosfwd>
@@ -24,7 +25,6 @@
 class MpqcParser : public FormatParser
 {
+  friend class ParserMpqcUnitTest;
 public:
-
-  enum Theory { CLHF, CLKS, MBPT2, MBPT2_R12, unknown };
 
   MpqcParser();
@@ -33,15 +33,8 @@
   void save(std::ostream* file, const std::vector<atom *> &atoms);
 
-  void setHessian(bool hessian);
-  void setTheory(enum Theory _theory);
-
 private:
-  // whether output with computing hessian is desired.
-  bool HessianPresent;
-  enum Theory theory;
-
-  void saveSimple(std::ostream *file, const std::vector<atom *> &atoms);
-  void saveHessian(std::ostream *file, const std::vector<atom *> &atoms);
+  MpqcParser_Parameters params;
 };
 
+
 #endif /* MPQCPARSER_HPP_ */
Index: src/Parser/MpqcParser_Parameters.cpp
===================================================================
--- src/Parser/MpqcParser_Parameters.cpp	(revision 61d69a4cb73f0b86aacc2d6ca57bf28462918da9)
+++ src/Parser/MpqcParser_Parameters.cpp	(revision 61d69a4cb73f0b86aacc2d6ca57bf28462918da9)
@@ -0,0 +1,1849 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2010 University of Bonn. All rights reserved.
+ * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
+ */
+
+/*
+ * MpqcParser_Parameters.cpp
+ *
+ *  Created on: Feb 3, 2011
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <iostream>
+#include <boost/tokenizer.hpp>
+#include <string>
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include "CodePatterns/Log.hpp"
+#include "CodePatterns/Verbose.hpp"
+
+#include "MpqcParser.hpp"
+
+#include "MpqcParser_Parameters.hpp"
+
+
+using boost::any_cast;
+
+MpqcParser_Parameters::MpqcParser_Parameters()
+{
+  // add all known basis
+  initBasis();
+
+  // add all theory names
+  TheoryNames[CLHF]="CLHF";
+  TheoryNames[CLKS]="CLKS";
+  TheoryNames[MBPT2]="MBPT2";
+  TheoryNames[MBPT2_R12]="MBPT2_R12";
+
+  // add all integration names
+  IntegrationNames[IntegralCints] = "IntegralCints";
+
+  // have names for all parmaters
+  ParamNames[HessianParam] = "Hessian";
+  ParamNames[savestateParam] = "savestate";
+  ParamNames[do_gradientParam] = "do_gradient";
+  ParamNames[maxiterParam] = "maxiter";
+  ParamNames[memoryParam] = "memory";
+  ParamNames[stdapproxParam] = "stdapprox";
+  ParamNames[nfzcParam] = "nfzc";
+  ParamNames[basisParam] = "basis";
+  ParamNames[aux_basisParam] = "aux_basis";
+  ParamNames[integrationParam] = "integration";
+  ParamNames[theoryParam] = "theory";
+
+  initParameters();
+}
+
+void MpqcParser_Parameters::initParameters()
+{
+	appendParameter(HessianParam, bool(false));
+	appendParameter(savestateParam, bool(false));
+	appendParameter(do_gradientParam, bool(true));
+	appendParameter(maxiterParam, int(1000));
+	appendParameter(memoryParam, int(16000000));
+	appendParameter(stdapproxParam, std::string("A'"));
+	appendParameter(nfzcParam, int(1));
+	appendParameter(basisParam, std::string("3-21G"));
+	appendParameter(aux_basisParam, std::string("aug-cc-pVDZ"));
+	appendParameter(integrationParam, IntegralCints);
+	appendParameter(theoryParam, MBPT2);
+}
+
+MpqcParser_Parameters::~MpqcParser_Parameters()
+{}
+
+std::ostream & operator << (std::ostream& ost, MpqcParser_Parameters &mpqc_params)
+{
+  std::ostringstream output;
+  output << "Hessian=" << mpqc_params.getString(MpqcParser_Parameters::HessianParam) << ";";
+  output << "savestate=" << mpqc_params.getString(MpqcParser_Parameters::savestateParam) << ";";
+  output << "do_gradient=" << mpqc_params.getString(MpqcParser_Parameters::do_gradientParam) << ";";
+  output << "maxiter=" << mpqc_params.getString(MpqcParser_Parameters::maxiterParam) << ";";
+  output << "memory=" << mpqc_params.getString(MpqcParser_Parameters::memoryParam) << ";";
+  output << "stdapprox=" << mpqc_params.getString(MpqcParser_Parameters::stdapproxParam) << ";";
+  output << "nfzc=" << mpqc_params.getString(MpqcParser_Parameters::nfzcParam) << ";";
+  output << "basis=" << mpqc_params.getString(MpqcParser_Parameters::basisParam) << ";";
+  output << "aux_basis=" << mpqc_params.getString(MpqcParser_Parameters::aux_basisParam) << ";";
+  output << "integration=" << mpqc_params.getString(MpqcParser_Parameters::integrationParam) << ";";
+  output << "theory=" << mpqc_params.getString(MpqcParser_Parameters::theoryParam) << ";";
+  ost << output.str();
+  return ost;
+}
+
+// TODO: These should throw exceptions such that invalid user entry can be detected.
+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("=");
+  std::string line;
+  double tmp;
+  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 ';'!");
+  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;
+      ASSERT(tok_valueiter == params.end(),
+          "operator<< on MpqcParser_Parameters - missing value before ';'!");
+      ++tok_checkiter;
+      ASSERT(tok_checkiter == params.end(),
+          "operator<< on MpqcParser_Parameters - still tokens before ';'!");
+      DoLog(0) && (Log() << Verbose(0) << "INFO: Token pair is " << *tok_paramiter << "," << *tok_valueiter << std::endl);
+      std::stringstream value(*tok_valueiter);
+
+      value >> tmp;
+//      if ((MpqcParser_Parameters::params.count(*tok_paramiter) != 0)
+//          && (tmp != MpqcParser_Parameters::noset_value)) {
+//        switch (MpqcParser_Parameters::params[*tok_paramiter]) {
+//          case (MpqcParser_Parameters::param_seed):
+//              params.seed = tmp;
+//              break;
+//          default:
+//              std::cerr << "This is weird, we cannot get here!" << std::endl;
+//        }
+//        DoLog(1) && (Log() << Verbose(1) << "ACCEPT: Value for token " << *tok_paramiter << " set." << std::endl);
+//      } else {
+//        DoLog(1) && (Log() << Verbose(1) << "REJECT: Value for token " << *tok_paramiter << " not specified." << std::endl);
+//      }
+    } else {
+      ist.setstate(std::ios::eofbit);
+    }
+  }
+  return ist;
+}
+
+
+/** Sets whether hessian is desired or not
+ * \param hessian statement
+ */
+void MpqcParser_Parameters::setHessian(bool _hessian)
+{
+  try {
+    params[HessianParam] = _hessian;
+  } catch(const boost::bad_any_cast &) {
+    DoeLog(0) && (eLog() << Verbose(0)
+        << "MpqcParser_Parameters::setHessian() - could not set boolean!" << std::endl);
+  }
+}
+
+/** Sets the desired level of solving theory to use
+ * \param _theory shorthand of the theory
+ */
+void MpqcParser_Parameters::setTheory(enum Theory _theory)
+{
+  try {
+    params[theoryParam] = _theory;
+  } catch(const boost::bad_any_cast &) {
+    DoeLog(0) && (eLog() << Verbose(0)
+        << "MpqcParser_Parameters::setHessian() - could not set boolean!" << std::endl);
+  }
+}
+
+enum MpqcParser_Parameters::IntegrationMethod MpqcParser_Parameters::getIntegration()
+{
+  enum IntegrationMethod value;
+  try {
+    value = boost::any_cast<enum IntegrationMethod>(params[integrationParam]);
+  } catch(const boost::bad_any_cast &) {
+    DoeLog(0) && (eLog() << Verbose(0)
+        << "MpqcParser_Parameters::getIntegration() - could not convert "
+        +ParamNames[integrationParam]+" to enum IntegrationMethod!" << std::endl);
+  }
+  return value;
+}
+
+enum MpqcParser_Parameters::Theory MpqcParser_Parameters::getTheory()
+{
+  enum Theory value;
+  try {
+    value = boost::any_cast<enum Theory>(params[theoryParam]);
+  } catch(const boost::bad_any_cast &) {
+    DoeLog(0) && (eLog() << Verbose(0)
+        << "MpqcParser_Parameters::getTheory() - could not convert "
+        +ParamNames[theoryParam]+" to enum Theory!" << std::endl);
+  }
+  return value;
+}
+
+std::string MpqcParser_Parameters::getString(enum Parameters _param)
+{
+  std::string value;
+  enum IntegrationMethod Iindex;
+  enum Theory Tindex;
+  bool test;
+  switch (_param) {
+    case HessianParam:
+    case savestateParam:
+    case do_gradientParam:
+      test = boost::any_cast<bool>(params[_param]);
+      if (test)
+        value = "yes";
+      else
+        value = "no";
+      break;
+    case integrationParam:
+      try {
+        Iindex = boost::any_cast<enum IntegrationMethod>(params[_param]);
+      } catch(const boost::bad_any_cast &) {
+        DoeLog(0) && (eLog() << Verbose(0)
+            << "MpqcParser_Parameters::getString() - could not convert "
+            +ParamNames[_param]+" to string!" << std::endl);
+      }
+      value = IntegrationNames[Iindex];
+      break;
+    case theoryParam:
+      try {
+        Tindex = boost::any_cast<enum Theory>(params[_param]);
+      } catch(const boost::bad_any_cast &) {
+        DoeLog(0) && (eLog() << Verbose(0)
+            << "MpqcParser_Parameters::getString() - could not convert "
+            +ParamNames[_param]+" to string!" << std::endl);
+      }
+      value = TheoryNames[(enum Theory)Tindex];
+      break;
+    default:
+      try {
+        value = boost::any_cast<std::string>(params[_param]);
+      } catch(const boost::bad_any_cast &) {
+        DoeLog(0) && (eLog() << Verbose(0)
+            << "MpqcParser_Parameters::getString() - could not convert "
+            +ParamNames[_param]+" to string!" << std::endl);
+      }
+      break;
+  }
+
+  return value;
+}
+
+int MpqcParser_Parameters::getInt(enum Parameters _param)
+{
+  int value;
+  switch (_param) {
+    default:
+      try {
+        value = boost::any_cast<int>(params[_param]);
+      } catch(const boost::bad_any_cast &) {
+        DoeLog(0) && (eLog() << Verbose(0)
+            << "MpqcParser_Parameters::getInt() - could not convert "
+            +ParamNames[_param]+" to int!" << std::endl);
+      }
+      break;
+  }
+  return value;
+}
+
+double MpqcParser_Parameters::getDouble(enum Parameters _param)
+    {
+  double value;
+  try {
+    value = boost::any_cast<double>(params[_param]);
+  } catch(const boost::bad_any_cast &) {
+    DoeLog(0) && (eLog() << Verbose(0)
+        << "MpqcParser_Parameters::getDouble() - could not convert "
+        +ParamNames[_param]+" to double!" << std::endl);
+  }
+  return value;
+}
+
+bool MpqcParser_Parameters::getBool(enum Parameters _param)
+{
+  bool value;
+  try {
+    value = boost::any_cast<bool>(params[_param]);
+  } catch(const boost::bad_any_cast &) {
+    DoeLog(0) && (eLog() << Verbose(0)
+        << "MpqcParser_Parameters::getBool() - could not convert "
+        +ParamNames[_param]+" to bool!" << std::endl);
+  }
+  return value;
+}
+
+
+/** Checks whether all elements in the world also have parameters in the basis.
+ *
+ * @return true - all elements parametrized, false - at least one element is missing.
+ */
+bool MpqcParser_Parameters::checkWorldElementsAgainstCurrentBasis() const
+{
+  DoeLog(0) && (eLog() << Verbose(0)
+      << "MpqcParser_Parameters::checkWorldElementsAgainstCurrentBasis() - not implemented yet."
+      << std::endl);
+
+  return false;
+}
+
+void MpqcParser_Parameters::initBasis()
+{
+  // list is obtained via the following shell script
+  //for basis in ~/install/share/mpqc/3.0.0-alpha/basis/*.kv; do
+  //  grep ": \"" $basis | awk -F":" '{print "\tBasisList["$2"].push_back(\""$1"\");"}' | tr -d \ ;
+  //done
+
+  BasisList["3-21G"].push_back("hydrogen");
+	BasisList["3-21G"].push_back("helium");
+	BasisList["3-21G"].push_back("lithium");
+	BasisList["3-21G"].push_back("beryllium");
+	BasisList["3-21G"].push_back("boron");
+	BasisList["3-21G"].push_back("carbon");
+	BasisList["3-21G"].push_back("nitrogen");
+	BasisList["3-21G"].push_back("oxygen");
+	BasisList["3-21G"].push_back("fluorine");
+	BasisList["3-21G"].push_back("neon");
+	BasisList["3-21G"].push_back("sodium");
+	BasisList["3-21G"].push_back("magnesium");
+	BasisList["3-21G"].push_back("aluminum");
+	BasisList["3-21G"].push_back("silicon");
+	BasisList["3-21G"].push_back("phosphorus");
+	BasisList["3-21G"].push_back("sulfur");
+	BasisList["3-21G"].push_back("chlorine");
+	BasisList["3-21G"].push_back("argon");
+	BasisList["3-21G"].push_back("potassium");
+	BasisList["3-21G"].push_back("calcium");
+	BasisList["3-21G"].push_back("scandium");
+	BasisList["3-21G"].push_back("titanium");
+	BasisList["3-21G"].push_back("vanadium");
+	BasisList["3-21G"].push_back("chromium");
+	BasisList["3-21G"].push_back("manganese");
+	BasisList["3-21G"].push_back("iron");
+	BasisList["3-21G"].push_back("cobalt");
+	BasisList["3-21G"].push_back("nickel");
+	BasisList["3-21G"].push_back("copper");
+	BasisList["3-21G"].push_back("zinc");
+	BasisList["3-21G"].push_back("gallium");
+	BasisList["3-21G"].push_back("germanium");
+	BasisList["3-21G"].push_back("arsenic");
+	BasisList["3-21G"].push_back("selenium");
+	BasisList["3-21G"].push_back("bromine");
+	BasisList["3-21G"].push_back("krypton");
+	BasisList["3-21G*"].push_back("hydrogen");
+	BasisList["3-21G*"].push_back("helium");
+	BasisList["3-21G*"].push_back("lithium");
+	BasisList["3-21G*"].push_back("beryllium");
+	BasisList["3-21G*"].push_back("boron");
+	BasisList["3-21G*"].push_back("carbon");
+	BasisList["3-21G*"].push_back("nitrogen");
+	BasisList["3-21G*"].push_back("oxygen");
+	BasisList["3-21G*"].push_back("fluorine");
+	BasisList["3-21G*"].push_back("neon");
+	BasisList["3-21G*"].push_back("sodium");
+	BasisList["3-21G*"].push_back("magnesium");
+	BasisList["3-21G*"].push_back("aluminum");
+	BasisList["3-21G*"].push_back("silicon");
+	BasisList["3-21G*"].push_back("phosphorus");
+	BasisList["3-21G*"].push_back("sulfur");
+	BasisList["3-21G*"].push_back("chlorine");
+	BasisList["3-21G*"].push_back("argon");
+	BasisList["3-21++G"].push_back("hydrogen");
+	BasisList["3-21++G"].push_back("helium");
+	BasisList["3-21++G"].push_back("lithium");
+	BasisList["3-21++G"].push_back("beryllium");
+	BasisList["3-21++G"].push_back("boron");
+	BasisList["3-21++G"].push_back("carbon");
+	BasisList["3-21++G"].push_back("nitrogen");
+	BasisList["3-21++G"].push_back("oxygen");
+	BasisList["3-21++G"].push_back("fluorine");
+	BasisList["3-21++G"].push_back("neon");
+	BasisList["3-21++G"].push_back("sodium");
+	BasisList["3-21++G"].push_back("magnesium");
+	BasisList["3-21++G"].push_back("aluminum");
+	BasisList["3-21++G"].push_back("silicon");
+	BasisList["3-21++G"].push_back("phosphorus");
+	BasisList["3-21++G"].push_back("sulfur");
+	BasisList["3-21++G"].push_back("chlorine");
+	BasisList["3-21++G"].push_back("argon");
+	BasisList["3-21++G*"].push_back("hydrogen");
+	BasisList["3-21++G*"].push_back("helium");
+	BasisList["3-21++G*"].push_back("lithium");
+	BasisList["3-21++G*"].push_back("beryllium");
+	BasisList["3-21++G*"].push_back("boron");
+	BasisList["3-21++G*"].push_back("carbon");
+	BasisList["3-21++G*"].push_back("nitrogen");
+	BasisList["3-21++G*"].push_back("oxygen");
+	BasisList["3-21++G*"].push_back("fluorine");
+	BasisList["3-21++G*"].push_back("neon");
+	BasisList["3-21++G*"].push_back("sodium");
+	BasisList["3-21++G*"].push_back("magnesium");
+	BasisList["3-21++G*"].push_back("aluminum");
+	BasisList["3-21++G*"].push_back("silicon");
+	BasisList["3-21++G*"].push_back("phosphorus");
+	BasisList["3-21++G*"].push_back("sulfur");
+	BasisList["3-21++G*"].push_back("chlorine");
+	BasisList["3-21++G*"].push_back("argon");
+	BasisList["4-31G"].push_back("hydrogen");
+	BasisList["4-31G"].push_back("helium");
+	BasisList["4-31G"].push_back("lithium");
+	BasisList["4-31G"].push_back("beryllium");
+	BasisList["4-31G"].push_back("boron");
+	BasisList["4-31G"].push_back("carbon");
+	BasisList["4-31G"].push_back("nitrogen");
+	BasisList["4-31G"].push_back("oxygen");
+	BasisList["4-31G"].push_back("fluorine");
+	BasisList["4-31G"].push_back("neon");
+	BasisList["4-31G"].push_back("phosphorus");
+	BasisList["4-31G"].push_back("sulfur");
+	BasisList["4-31G"].push_back("chlorine");
+	BasisList["6-311G"].push_back("hydrogen");
+	BasisList["6-311G"].push_back("helium");
+	BasisList["6-311G"].push_back("lithium");
+	BasisList["6-311G"].push_back("beryllium");
+	BasisList["6-311G"].push_back("boron");
+	BasisList["6-311G"].push_back("carbon");
+	BasisList["6-311G"].push_back("nitrogen");
+	BasisList["6-311G"].push_back("oxygen");
+	BasisList["6-311G"].push_back("fluorine");
+	BasisList["6-311G"].push_back("neon");
+	BasisList["6-311G"].push_back("sodium");
+	BasisList["6-311G"].push_back("magnesium");
+	BasisList["6-311G"].push_back("aluminum");
+	BasisList["6-311G"].push_back("silicon");
+	BasisList["6-311G"].push_back("phosphorus");
+	BasisList["6-311G"].push_back("sulfur");
+	BasisList["6-311G"].push_back("chlorine");
+	BasisList["6-311G"].push_back("argon");
+	BasisList["6-311G"].push_back("potassium");
+	BasisList["6-311G"].push_back("calcium");
+	BasisList["6-311G"].push_back("gallium");
+	BasisList["6-311G"].push_back("germanium");
+	BasisList["6-311G"].push_back("arsenic");
+	BasisList["6-311G"].push_back("selenium");
+	BasisList["6-311G"].push_back("bromine");
+	BasisList["6-311G"].push_back("krypton");
+	BasisList["6-311G(2df,2pd)"].push_back("hydrogen");
+	BasisList["6-311G(2df,2pd)"].push_back("helium");
+	BasisList["6-311G(2df,2pd)"].push_back("lithium");
+	BasisList["6-311G(2df,2pd)"].push_back("beryllium");
+	BasisList["6-311G(2df,2pd)"].push_back("boron");
+	BasisList["6-311G(2df,2pd)"].push_back("carbon");
+	BasisList["6-311G(2df,2pd)"].push_back("nitrogen");
+	BasisList["6-311G(2df,2pd)"].push_back("oxygen");
+	BasisList["6-311G(2df,2pd)"].push_back("fluorine");
+	BasisList["6-311G(2df,2pd)"].push_back("neon");
+	BasisList["6-311G(2df,2pd)"].push_back("potassium");
+	BasisList["6-311G(2df,2pd)"].push_back("calcium");
+	BasisList["6-311G*"].push_back("hydrogen");
+	BasisList["6-311G*"].push_back("helium");
+	BasisList["6-311G*"].push_back("lithium");
+	BasisList["6-311G*"].push_back("beryllium");
+	BasisList["6-311G*"].push_back("boron");
+	BasisList["6-311G*"].push_back("carbon");
+	BasisList["6-311G*"].push_back("nitrogen");
+	BasisList["6-311G*"].push_back("oxygen");
+	BasisList["6-311G*"].push_back("fluorine");
+	BasisList["6-311G*"].push_back("neon");
+	BasisList["6-311G*"].push_back("sodium");
+	BasisList["6-311G*"].push_back("magnesium");
+	BasisList["6-311G*"].push_back("aluminum");
+	BasisList["6-311G*"].push_back("silicon");
+	BasisList["6-311G*"].push_back("phosphorus");
+	BasisList["6-311G*"].push_back("sulfur");
+	BasisList["6-311G*"].push_back("chlorine");
+	BasisList["6-311G*"].push_back("argon");
+	BasisList["6-311G*"].push_back("potassium");
+	BasisList["6-311G*"].push_back("calcium");
+	BasisList["6-311G*"].push_back("gallium");
+	BasisList["6-311G*"].push_back("germanium");
+	BasisList["6-311G*"].push_back("arsenic");
+	BasisList["6-311G*"].push_back("selenium");
+	BasisList["6-311G*"].push_back("bromine");
+	BasisList["6-311G*"].push_back("krypton");
+	BasisList["6-311G**"].push_back("hydrogen");
+	BasisList["6-311G**"].push_back("helium");
+	BasisList["6-311G**"].push_back("lithium");
+	BasisList["6-311G**"].push_back("beryllium");
+	BasisList["6-311G**"].push_back("boron");
+	BasisList["6-311G**"].push_back("carbon");
+	BasisList["6-311G**"].push_back("nitrogen");
+	BasisList["6-311G**"].push_back("oxygen");
+	BasisList["6-311G**"].push_back("fluorine");
+	BasisList["6-311G**"].push_back("neon");
+	BasisList["6-311G**"].push_back("sodium");
+	BasisList["6-311G**"].push_back("magnesium");
+	BasisList["6-311G**"].push_back("aluminum");
+	BasisList["6-311G**"].push_back("silicon");
+	BasisList["6-311G**"].push_back("phosphorus");
+	BasisList["6-311G**"].push_back("sulfur");
+	BasisList["6-311G**"].push_back("chlorine");
+	BasisList["6-311G**"].push_back("argon");
+	BasisList["6-311G**"].push_back("potassium");
+	BasisList["6-311G**"].push_back("calcium");
+	BasisList["6-311G**"].push_back("gallium");
+	BasisList["6-311G**"].push_back("germanium");
+	BasisList["6-311G**"].push_back("arsenic");
+	BasisList["6-311G**"].push_back("selenium");
+	BasisList["6-311G**"].push_back("bromine");
+	BasisList["6-311G**"].push_back("krypton");
+	BasisList["6-311++G(2d,2p)"].push_back("hydrogen");
+	BasisList["6-311++G(2d,2p)"].push_back("helium");
+	BasisList["6-311++G(2d,2p)"].push_back("lithium");
+	BasisList["6-311++G(2d,2p)"].push_back("beryllium");
+	BasisList["6-311++G(2d,2p)"].push_back("boron");
+	BasisList["6-311++G(2d,2p)"].push_back("carbon");
+	BasisList["6-311++G(2d,2p)"].push_back("nitrogen");
+	BasisList["6-311++G(2d,2p)"].push_back("oxygen");
+	BasisList["6-311++G(2d,2p)"].push_back("fluorine");
+	BasisList["6-311++G(2d,2p)"].push_back("neon");
+	BasisList["6-311++G(2d,2p)"].push_back("sodium");
+	BasisList["6-311++G(2d,2p)"].push_back("magnesium");
+	BasisList["6-311++G(2d,2p)"].push_back("aluminum");
+	BasisList["6-311++G(2d,2p)"].push_back("silicon");
+	BasisList["6-311++G(2d,2p)"].push_back("phosphorus");
+	BasisList["6-311++G(2d,2p)"].push_back("sulfur");
+	BasisList["6-311++G(2d,2p)"].push_back("chlorine");
+	BasisList["6-311++G(2d,2p)"].push_back("argon");
+	BasisList["6-311++G(2d,2p)"].push_back("potassium");
+	BasisList["6-311++G(2d,2p)"].push_back("calcium");
+	BasisList["6-311++G(3df,3pd)"].push_back("hydrogen");
+	BasisList["6-311++G(3df,3pd)"].push_back("helium");
+	BasisList["6-311++G(3df,3pd)"].push_back("lithium");
+	BasisList["6-311++G(3df,3pd)"].push_back("beryllium");
+	BasisList["6-311++G(3df,3pd)"].push_back("boron");
+	BasisList["6-311++G(3df,3pd)"].push_back("carbon");
+	BasisList["6-311++G(3df,3pd)"].push_back("nitrogen");
+	BasisList["6-311++G(3df,3pd)"].push_back("oxygen");
+	BasisList["6-311++G(3df,3pd)"].push_back("fluorine");
+	BasisList["6-311++G(3df,3pd)"].push_back("neon");
+	BasisList["6-311++G(3df,3pd)"].push_back("sodium");
+	BasisList["6-311++G(3df,3pd)"].push_back("magnesium");
+	BasisList["6-311++G(3df,3pd)"].push_back("aluminum");
+	BasisList["6-311++G(3df,3pd)"].push_back("silicon");
+	BasisList["6-311++G(3df,3pd)"].push_back("phosphorus");
+	BasisList["6-311++G(3df,3pd)"].push_back("sulfur");
+	BasisList["6-311++G(3df,3pd)"].push_back("chlorine");
+	BasisList["6-311++G(3df,3pd)"].push_back("argon");
+	BasisList["6-311++G**"].push_back("hydrogen");
+	BasisList["6-311++G**"].push_back("helium");
+	BasisList["6-311++G**"].push_back("lithium");
+	BasisList["6-311++G**"].push_back("beryllium");
+	BasisList["6-311++G**"].push_back("boron");
+	BasisList["6-311++G**"].push_back("carbon");
+	BasisList["6-311++G**"].push_back("nitrogen");
+	BasisList["6-311++G**"].push_back("oxygen");
+	BasisList["6-311++G**"].push_back("fluorine");
+	BasisList["6-311++G**"].push_back("neon");
+	BasisList["6-31G"].push_back("hydrogen");
+	BasisList["6-31G"].push_back("helium");
+	BasisList["6-31G"].push_back("lithium");
+	BasisList["6-31G"].push_back("beryllium");
+	BasisList["6-31G"].push_back("boron");
+	BasisList["6-31G"].push_back("carbon");
+	BasisList["6-31G"].push_back("nitrogen");
+	BasisList["6-31G"].push_back("oxygen");
+	BasisList["6-31G"].push_back("fluorine");
+	BasisList["6-31G"].push_back("neon");
+	BasisList["6-31G"].push_back("sodium");
+	BasisList["6-31G"].push_back("magnesium");
+	BasisList["6-31G"].push_back("aluminum");
+	BasisList["6-31G"].push_back("silicon");
+	BasisList["6-31G"].push_back("phosphorus");
+	BasisList["6-31G"].push_back("sulfur");
+	BasisList["6-31G"].push_back("chlorine");
+	BasisList["6-31G"].push_back("argon");
+	BasisList["6-31G"].push_back("potassium");
+	BasisList["6-31G"].push_back("calcium");
+	BasisList["6-31G"].push_back("scandium");
+	BasisList["6-31G"].push_back("titanium");
+	BasisList["6-31G"].push_back("vanadium");
+	BasisList["6-31G"].push_back("chromium");
+	BasisList["6-31G"].push_back("manganese");
+	BasisList["6-31G"].push_back("iron");
+	BasisList["6-31G"].push_back("cobalt");
+	BasisList["6-31G"].push_back("nickel");
+	BasisList["6-31G"].push_back("copper");
+	BasisList["6-31G"].push_back("zinc");
+	BasisList["6-31G*"].push_back("hydrogen");
+	BasisList["6-31G*"].push_back("helium");
+	BasisList["6-31G*"].push_back("lithium");
+	BasisList["6-31G*"].push_back("beryllium");
+	BasisList["6-31G*"].push_back("boron");
+	BasisList["6-31G*"].push_back("carbon");
+	BasisList["6-31G*"].push_back("nitrogen");
+	BasisList["6-31G*"].push_back("oxygen");
+	BasisList["6-31G*"].push_back("fluorine");
+	BasisList["6-31G*"].push_back("neon");
+	BasisList["6-31G*"].push_back("sodium");
+	BasisList["6-31G*"].push_back("magnesium");
+	BasisList["6-31G*"].push_back("aluminum");
+	BasisList["6-31G*"].push_back("silicon");
+	BasisList["6-31G*"].push_back("phosphorus");
+	BasisList["6-31G*"].push_back("sulfur");
+	BasisList["6-31G*"].push_back("chlorine");
+	BasisList["6-31G*"].push_back("argon");
+	BasisList["6-31G*"].push_back("potassium");
+	BasisList["6-31G*"].push_back("calcium");
+	BasisList["6-31G*"].push_back("scandium");
+	BasisList["6-31G*"].push_back("titanium");
+	BasisList["6-31G*"].push_back("vanadium");
+	BasisList["6-31G*"].push_back("chromium");
+	BasisList["6-31G*"].push_back("manganese");
+	BasisList["6-31G*"].push_back("iron");
+	BasisList["6-31G*"].push_back("cobalt");
+	BasisList["6-31G*"].push_back("nickel");
+	BasisList["6-31G*"].push_back("copper");
+	BasisList["6-31G*"].push_back("zinc");
+	BasisList["6-31G**"].push_back("hydrogen");
+	BasisList["6-31G**"].push_back("helium");
+	BasisList["6-31G**"].push_back("lithium");
+	BasisList["6-31G**"].push_back("beryllium");
+	BasisList["6-31G**"].push_back("boron");
+	BasisList["6-31G**"].push_back("carbon");
+	BasisList["6-31G**"].push_back("nitrogen");
+	BasisList["6-31G**"].push_back("oxygen");
+	BasisList["6-31G**"].push_back("fluorine");
+	BasisList["6-31G**"].push_back("neon");
+	BasisList["6-31G**"].push_back("sodium");
+	BasisList["6-31G**"].push_back("magnesium");
+	BasisList["6-31G**"].push_back("aluminum");
+	BasisList["6-31G**"].push_back("silicon");
+	BasisList["6-31G**"].push_back("phosphorus");
+	BasisList["6-31G**"].push_back("sulfur");
+	BasisList["6-31G**"].push_back("chlorine");
+	BasisList["6-31G**"].push_back("argon");
+	BasisList["6-31G**"].push_back("potassium");
+	BasisList["6-31G**"].push_back("calcium");
+	BasisList["6-31G**"].push_back("scandium");
+	BasisList["6-31G**"].push_back("titanium");
+	BasisList["6-31G**"].push_back("vanadium");
+	BasisList["6-31G**"].push_back("chromium");
+	BasisList["6-31G**"].push_back("manganese");
+	BasisList["6-31G**"].push_back("iron");
+	BasisList["6-31G**"].push_back("cobalt");
+	BasisList["6-31G**"].push_back("nickel");
+	BasisList["6-31G**"].push_back("copper");
+	BasisList["6-31G**"].push_back("zinc");
+	BasisList["6-31+G*"].push_back("hydrogen");
+	BasisList["6-31+G*"].push_back("helium");
+	BasisList["6-31+G*"].push_back("lithium");
+	BasisList["6-31+G*"].push_back("beryllium");
+	BasisList["6-31+G*"].push_back("boron");
+	BasisList["6-31+G*"].push_back("carbon");
+	BasisList["6-31+G*"].push_back("nitrogen");
+	BasisList["6-31+G*"].push_back("oxygen");
+	BasisList["6-31+G*"].push_back("fluorine");
+	BasisList["6-31+G*"].push_back("neon");
+	BasisList["6-31+G*"].push_back("sodium");
+	BasisList["6-31+G*"].push_back("magnesium");
+	BasisList["6-31+G*"].push_back("aluminum");
+	BasisList["6-31+G*"].push_back("silicon");
+	BasisList["6-31+G*"].push_back("phosphorus");
+	BasisList["6-31+G*"].push_back("sulfur");
+	BasisList["6-31+G*"].push_back("chlorine");
+	BasisList["6-31+G*"].push_back("argon");
+	BasisList["6-31++G"].push_back("hydrogen");
+	BasisList["6-31++G"].push_back("helium");
+	BasisList["6-31++G"].push_back("lithium");
+	BasisList["6-31++G"].push_back("beryllium");
+	BasisList["6-31++G"].push_back("boron");
+	BasisList["6-31++G"].push_back("carbon");
+	BasisList["6-31++G"].push_back("nitrogen");
+	BasisList["6-31++G"].push_back("oxygen");
+	BasisList["6-31++G"].push_back("fluorine");
+	BasisList["6-31++G"].push_back("neon");
+	BasisList["6-31++G"].push_back("sodium");
+	BasisList["6-31++G"].push_back("magnesium");
+	BasisList["6-31++G"].push_back("aluminum");
+	BasisList["6-31++G"].push_back("silicon");
+	BasisList["6-31++G"].push_back("phosphorus");
+	BasisList["6-31++G"].push_back("sulfur");
+	BasisList["6-31++G"].push_back("chlorine");
+	BasisList["6-31++G"].push_back("argon");
+	BasisList["6-31++G"].push_back("potassium");
+	BasisList["6-31++G"].push_back("calcium");
+	BasisList["6-31++G*"].push_back("hydrogen");
+	BasisList["6-31++G*"].push_back("helium");
+	BasisList["6-31++G*"].push_back("lithium");
+	BasisList["6-31++G*"].push_back("beryllium");
+	BasisList["6-31++G*"].push_back("boron");
+	BasisList["6-31++G*"].push_back("carbon");
+	BasisList["6-31++G*"].push_back("nitrogen");
+	BasisList["6-31++G*"].push_back("oxygen");
+	BasisList["6-31++G*"].push_back("fluorine");
+	BasisList["6-31++G*"].push_back("neon");
+	BasisList["6-31++G*"].push_back("sodium");
+	BasisList["6-31++G*"].push_back("magnesium");
+	BasisList["6-31++G*"].push_back("aluminum");
+	BasisList["6-31++G*"].push_back("silicon");
+	BasisList["6-31++G*"].push_back("phosphorus");
+	BasisList["6-31++G*"].push_back("sulfur");
+	BasisList["6-31++G*"].push_back("chlorine");
+	BasisList["6-31++G*"].push_back("argon");
+	BasisList["6-31++G**"].push_back("hydrogen");
+	BasisList["6-31++G**"].push_back("helium");
+	BasisList["6-31++G**"].push_back("lithium");
+	BasisList["6-31++G**"].push_back("beryllium");
+	BasisList["6-31++G**"].push_back("boron");
+	BasisList["6-31++G**"].push_back("carbon");
+	BasisList["6-31++G**"].push_back("nitrogen");
+	BasisList["6-31++G**"].push_back("oxygen");
+	BasisList["6-31++G**"].push_back("fluorine");
+	BasisList["6-31++G**"].push_back("neon");
+	BasisList["6-31++G**"].push_back("sodium");
+	BasisList["6-31++G**"].push_back("magnesium");
+	BasisList["6-31++G**"].push_back("aluminum");
+	BasisList["6-31++G**"].push_back("silicon");
+	BasisList["6-31++G**"].push_back("phosphorus");
+	BasisList["6-31++G**"].push_back("sulfur");
+	BasisList["6-31++G**"].push_back("chlorine");
+	BasisList["6-31++G**"].push_back("argon");
+	BasisList["aug-cc-pCV5Z"].push_back("boron");
+	BasisList["aug-cc-pCV5Z"].push_back("carbon");
+	BasisList["aug-cc-pCV5Z"].push_back("nitrogen");
+	BasisList["aug-cc-pCV5Z"].push_back("oxygen");
+	BasisList["aug-cc-pCV5Z"].push_back("fluorine");
+	BasisList["aug-cc-pCV5Z"].push_back("neon");
+	BasisList["aug-cc-pCVDZ"].push_back("boron");
+	BasisList["aug-cc-pCVDZ"].push_back("carbon");
+	BasisList["aug-cc-pCVDZ"].push_back("nitrogen");
+	BasisList["aug-cc-pCVDZ"].push_back("oxygen");
+	BasisList["aug-cc-pCVDZ"].push_back("fluorine");
+	BasisList["aug-cc-pCVDZ"].push_back("neon");
+	BasisList["aug-cc-pCVDZ"].push_back("aluminum");
+	BasisList["aug-cc-pCVDZ"].push_back("silicon");
+	BasisList["aug-cc-pCVDZ"].push_back("phosphorus");
+	BasisList["aug-cc-pCVDZ"].push_back("sulfur");
+	BasisList["aug-cc-pCVDZ"].push_back("chlorine");
+	BasisList["aug-cc-pCVDZ"].push_back("argon");
+	BasisList["aug-cc-pCVQZ"].push_back("boron");
+	BasisList["aug-cc-pCVQZ"].push_back("carbon");
+	BasisList["aug-cc-pCVQZ"].push_back("nitrogen");
+	BasisList["aug-cc-pCVQZ"].push_back("oxygen");
+	BasisList["aug-cc-pCVQZ"].push_back("fluorine");
+	BasisList["aug-cc-pCVQZ"].push_back("neon");
+	BasisList["aug-cc-pCVQZ"].push_back("aluminum");
+	BasisList["aug-cc-pCVQZ"].push_back("silicon");
+	BasisList["aug-cc-pCVQZ"].push_back("phosphorus");
+	BasisList["aug-cc-pCVQZ"].push_back("sulfur");
+	BasisList["aug-cc-pCVQZ"].push_back("chlorine");
+	BasisList["aug-cc-pCVQZ"].push_back("argon");
+	BasisList["aug-cc-pCVTZ"].push_back("boron");
+	BasisList["aug-cc-pCVTZ"].push_back("carbon");
+	BasisList["aug-cc-pCVTZ"].push_back("nitrogen");
+	BasisList["aug-cc-pCVTZ"].push_back("oxygen");
+	BasisList["aug-cc-pCVTZ"].push_back("fluorine");
+	BasisList["aug-cc-pCVTZ"].push_back("neon");
+	BasisList["aug-cc-pCVTZ"].push_back("aluminum");
+	BasisList["aug-cc-pCVTZ"].push_back("silicon");
+	BasisList["aug-cc-pCVTZ"].push_back("phosphorus");
+	BasisList["aug-cc-pCVTZ"].push_back("sulfur");
+	BasisList["aug-cc-pCVTZ"].push_back("chlorine");
+	BasisList["aug-cc-pCVTZ"].push_back("argon");
+	BasisList["aug-cc-pV5Z"].push_back("hydrogen");
+	BasisList["aug-cc-pV5Z"].push_back("helium");
+	BasisList["aug-cc-pV5Z"].push_back("boron");
+	BasisList["aug-cc-pV5Z"].push_back("carbon");
+	BasisList["aug-cc-pV5Z"].push_back("nitrogen");
+	BasisList["aug-cc-pV5Z"].push_back("oxygen");
+	BasisList["aug-cc-pV5Z"].push_back("fluorine");
+	BasisList["aug-cc-pV5Z"].push_back("neon");
+	BasisList["aug-cc-pV5Z"].push_back("aluminum");
+	BasisList["aug-cc-pV5Z"].push_back("silicon");
+	BasisList["aug-cc-pV5Z"].push_back("phosphorus");
+	BasisList["aug-cc-pV5Z"].push_back("sulfur");
+	BasisList["aug-cc-pV5Z"].push_back("chlorine");
+	BasisList["aug-cc-pV5Z"].push_back("argon");
+	BasisList["aug-cc-pV5Z"].push_back("gallium");
+	BasisList["aug-cc-pV5Z"].push_back("germanium");
+	BasisList["aug-cc-pV5Z"].push_back("arsenic");
+	BasisList["aug-cc-pV5Z"].push_back("selenium");
+	BasisList["aug-cc-pV5Z"].push_back("bromine");
+	BasisList["aug-cc-pV5Z"].push_back("krypton");
+	BasisList["aug-cc-pV6Z"].push_back("hydrogen");
+	BasisList["aug-cc-pV6Z"].push_back("helium");
+	BasisList["aug-cc-pV6Z"].push_back("boron");
+	BasisList["aug-cc-pV6Z"].push_back("carbon");
+	BasisList["aug-cc-pV6Z"].push_back("nitrogen");
+	BasisList["aug-cc-pV6Z"].push_back("oxygen");
+	BasisList["aug-cc-pV6Z"].push_back("fluorine");
+	BasisList["aug-cc-pV6Z"].push_back("neon");
+	BasisList["aug-cc-pV6Z"].push_back("aluminum");
+	BasisList["aug-cc-pV6Z"].push_back("silicon");
+	BasisList["aug-cc-pV6Z"].push_back("phosphorus");
+	BasisList["aug-cc-pV6Z"].push_back("sulfur");
+	BasisList["aug-cc-pV6Z"].push_back("chlorine");
+	BasisList["aug-cc-pV6Z"].push_back("argon");
+	BasisList["aug-cc-pVDZ"].push_back("hydrogen");
+	BasisList["aug-cc-pVDZ"].push_back("helium");
+	BasisList["aug-cc-pVDZ"].push_back("boron");
+	BasisList["aug-cc-pVDZ"].push_back("carbon");
+	BasisList["aug-cc-pVDZ"].push_back("nitrogen");
+	BasisList["aug-cc-pVDZ"].push_back("oxygen");
+	BasisList["aug-cc-pVDZ"].push_back("fluorine");
+	BasisList["aug-cc-pVDZ"].push_back("neon");
+	BasisList["aug-cc-pVDZ"].push_back("aluminum");
+	BasisList["aug-cc-pVDZ"].push_back("silicon");
+	BasisList["aug-cc-pVDZ"].push_back("phosphorus");
+	BasisList["aug-cc-pVDZ"].push_back("sulfur");
+	BasisList["aug-cc-pVDZ"].push_back("chlorine");
+	BasisList["aug-cc-pVDZ"].push_back("argon");
+	BasisList["aug-cc-pVDZ"].push_back("gallium");
+	BasisList["aug-cc-pVDZ"].push_back("germanium");
+	BasisList["aug-cc-pVDZ"].push_back("arsenic");
+	BasisList["aug-cc-pVDZ"].push_back("selenium");
+	BasisList["aug-cc-pVDZ"].push_back("bromine");
+	BasisList["aug-cc-pVDZ"].push_back("krypton");
+	BasisList["aug-cc-pVQZ"].push_back("hydrogen");
+	BasisList["aug-cc-pVQZ"].push_back("helium");
+	BasisList["aug-cc-pVQZ"].push_back("boron");
+	BasisList["aug-cc-pVQZ"].push_back("carbon");
+	BasisList["aug-cc-pVQZ"].push_back("nitrogen");
+	BasisList["aug-cc-pVQZ"].push_back("oxygen");
+	BasisList["aug-cc-pVQZ"].push_back("fluorine");
+	BasisList["aug-cc-pVQZ"].push_back("neon");
+	BasisList["aug-cc-pVQZ"].push_back("aluminum");
+	BasisList["aug-cc-pVQZ"].push_back("silicon");
+	BasisList["aug-cc-pVQZ"].push_back("phosphorus");
+	BasisList["aug-cc-pVQZ"].push_back("sulfur");
+	BasisList["aug-cc-pVQZ"].push_back("chlorine");
+	BasisList["aug-cc-pVQZ"].push_back("argon");
+	BasisList["aug-cc-pVQZ"].push_back("gallium");
+	BasisList["aug-cc-pVQZ"].push_back("germanium");
+	BasisList["aug-cc-pVQZ"].push_back("arsenic");
+	BasisList["aug-cc-pVQZ"].push_back("selenium");
+	BasisList["aug-cc-pVQZ"].push_back("bromine");
+	BasisList["aug-cc-pVQZ"].push_back("krypton");
+	BasisList["aug-cc-pVTZ"].push_back("hydrogen");
+	BasisList["aug-cc-pVTZ"].push_back("helium");
+	BasisList["aug-cc-pVTZ"].push_back("boron");
+	BasisList["aug-cc-pVTZ"].push_back("carbon");
+	BasisList["aug-cc-pVTZ"].push_back("nitrogen");
+	BasisList["aug-cc-pVTZ"].push_back("oxygen");
+	BasisList["aug-cc-pVTZ"].push_back("fluorine");
+	BasisList["aug-cc-pVTZ"].push_back("neon");
+	BasisList["aug-cc-pVTZ"].push_back("aluminum");
+	BasisList["aug-cc-pVTZ"].push_back("silicon");
+	BasisList["aug-cc-pVTZ"].push_back("phosphorus");
+	BasisList["aug-cc-pVTZ"].push_back("sulfur");
+	BasisList["aug-cc-pVTZ"].push_back("chlorine");
+	BasisList["aug-cc-pVTZ"].push_back("argon");
+	BasisList["aug-cc-pVTZ"].push_back("gallium");
+	BasisList["aug-cc-pVTZ"].push_back("germanium");
+	BasisList["aug-cc-pVTZ"].push_back("arsenic");
+	BasisList["aug-cc-pVTZ"].push_back("selenium");
+	BasisList["aug-cc-pVTZ"].push_back("bromine");
+	BasisList["aug-cc-pVTZ"].push_back("krypton");
+	BasisList["augmentation-cc-pV5Z-DK"].push_back("scandium");
+	BasisList["augmentation-cc-pV5Z-DK"].push_back("titanium");
+	BasisList["augmentation-cc-pV5Z-DK"].push_back("vanadium");
+	BasisList["augmentation-cc-pV5Z-DK"].push_back("chromium");
+	BasisList["augmentation-cc-pV5Z-DK"].push_back("manganese");
+	BasisList["augmentation-cc-pV5Z-DK"].push_back("iron");
+	BasisList["augmentation-cc-pV5Z-DK"].push_back("cobalt");
+	BasisList["augmentation-cc-pV5Z-DK"].push_back("nickel");
+	BasisList["augmentation-cc-pV5Z-DK"].push_back("copper");
+	BasisList["augmentation-cc-pV5Z-DK"].push_back("zinc");
+	BasisList["augmentation-cc-pV5Z"].push_back("hydrogen");
+	BasisList["augmentation-cc-pV5Z"].push_back("boron");
+	BasisList["augmentation-cc-pV5Z"].push_back("carbon");
+	BasisList["augmentation-cc-pV5Z"].push_back("nitrogen");
+	BasisList["augmentation-cc-pV5Z"].push_back("oxygen");
+	BasisList["augmentation-cc-pV5Z"].push_back("fluorine");
+	BasisList["augmentation-cc-pV5Z"].push_back("neon");
+	BasisList["augmentation-cc-pV5Z"].push_back("aluminum");
+	BasisList["augmentation-cc-pV5Z"].push_back("silicon");
+	BasisList["augmentation-cc-pV5Z"].push_back("phosphorus");
+	BasisList["augmentation-cc-pV5Z"].push_back("sulfur");
+	BasisList["augmentation-cc-pV5Z"].push_back("chlorine");
+	BasisList["augmentation-cc-pV5Z"].push_back("argon");
+	BasisList["augmentation-cc-pV5Z"].push_back("gallium");
+	BasisList["augmentation-cc-pV5Z"].push_back("germanium");
+	BasisList["augmentation-cc-pV5Z"].push_back("arsenic");
+	BasisList["augmentation-cc-pV5Z"].push_back("selenium");
+	BasisList["augmentation-cc-pV5Z"].push_back("bromine");
+	BasisList["augmentation-cc-pV5Z"].push_back("krypton");
+	BasisList["augmentation-cc-pV5Z"].push_back("scandium");
+	BasisList["augmentation-cc-pV5Z"].push_back("titanium");
+	BasisList["augmentation-cc-pV5Z"].push_back("vanadium");
+	BasisList["augmentation-cc-pV5Z"].push_back("chromium");
+	BasisList["augmentation-cc-pV5Z"].push_back("manganese");
+	BasisList["augmentation-cc-pV5Z"].push_back("iron");
+	BasisList["augmentation-cc-pV5Z"].push_back("cobalt");
+	BasisList["augmentation-cc-pV5Z"].push_back("nickel");
+	BasisList["augmentation-cc-pV5Z"].push_back("copper");
+	BasisList["augmentation-cc-pV5Z"].push_back("zinc");
+	BasisList["augmentation-cc-pV5Z-RI"].push_back("hydrogen");
+	BasisList["augmentation-cc-pV5Z-RI"].push_back("helium");
+	BasisList["augmentation-cc-pV5Z-RI"].push_back("boron");
+	BasisList["augmentation-cc-pV5Z-RI"].push_back("carbon");
+	BasisList["augmentation-cc-pV5Z-RI"].push_back("nitrogen");
+	BasisList["augmentation-cc-pV5Z-RI"].push_back("oxygen");
+	BasisList["augmentation-cc-pV5Z-RI"].push_back("fluorine");
+	BasisList["augmentation-cc-pV5Z-RI"].push_back("neon");
+	BasisList["augmentation-cc-pV5Z-RI"].push_back("aluminum");
+	BasisList["augmentation-cc-pV5Z-RI"].push_back("silicon");
+	BasisList["augmentation-cc-pV5Z-RI"].push_back("phosphorus");
+	BasisList["augmentation-cc-pV5Z-RI"].push_back("sulfur");
+	BasisList["augmentation-cc-pV5Z-RI"].push_back("chlorine");
+	BasisList["augmentation-cc-pV5Z-RI"].push_back("argon");
+	BasisList["augmentation-cc-pV6Z"].push_back("hydrogen");
+	BasisList["augmentation-cc-pV6Z"].push_back("helium");
+	BasisList["augmentation-cc-pV6Z"].push_back("boron");
+	BasisList["augmentation-cc-pV6Z"].push_back("carbon");
+	BasisList["augmentation-cc-pV6Z"].push_back("nitrogen");
+	BasisList["augmentation-cc-pV6Z"].push_back("oxygen");
+	BasisList["augmentation-cc-pV6Z"].push_back("fluorine");
+	BasisList["augmentation-cc-pV6Z"].push_back("neon");
+	BasisList["augmentation-cc-pV6Z"].push_back("aluminum");
+	BasisList["augmentation-cc-pV6Z"].push_back("silicon");
+	BasisList["augmentation-cc-pV6Z"].push_back("phosphorus");
+	BasisList["augmentation-cc-pV6Z"].push_back("sulfur");
+	BasisList["augmentation-cc-pV6Z"].push_back("chlorine");
+	BasisList["augmentation-cc-pV6Z"].push_back("argon");
+	BasisList["augmentation-cc-pV6Z-RI"].push_back("hydrogen");
+	BasisList["augmentation-cc-pV6Z-RI"].push_back("helium");
+	BasisList["augmentation-cc-pV6Z-RI"].push_back("boron");
+	BasisList["augmentation-cc-pV6Z-RI"].push_back("carbon");
+	BasisList["augmentation-cc-pV6Z-RI"].push_back("nitrogen");
+	BasisList["augmentation-cc-pV6Z-RI"].push_back("oxygen");
+	BasisList["augmentation-cc-pV6Z-RI"].push_back("fluorine");
+	BasisList["augmentation-cc-pV6Z-RI"].push_back("neon");
+	BasisList["augmentation-cc-pV6Z-RI"].push_back("aluminum");
+	BasisList["augmentation-cc-pV6Z-RI"].push_back("silicon");
+	BasisList["augmentation-cc-pV6Z-RI"].push_back("phosphorus");
+	BasisList["augmentation-cc-pV6Z-RI"].push_back("sulfur");
+	BasisList["augmentation-cc-pV6Z-RI"].push_back("chlorine");
+	BasisList["augmentation-cc-pV6Z-RI"].push_back("argon");
+	BasisList["augmentation-cc-pVDZ"].push_back("hydrogen");
+	BasisList["augmentation-cc-pVDZ"].push_back("boron");
+	BasisList["augmentation-cc-pVDZ"].push_back("carbon");
+	BasisList["augmentation-cc-pVDZ"].push_back("nitrogen");
+	BasisList["augmentation-cc-pVDZ"].push_back("oxygen");
+	BasisList["augmentation-cc-pVDZ"].push_back("fluorine");
+	BasisList["augmentation-cc-pVDZ"].push_back("neon");
+	BasisList["augmentation-cc-pVDZ"].push_back("aluminum");
+	BasisList["augmentation-cc-pVDZ"].push_back("silicon");
+	BasisList["augmentation-cc-pVDZ"].push_back("phosphorus");
+	BasisList["augmentation-cc-pVDZ"].push_back("sulfur");
+	BasisList["augmentation-cc-pVDZ"].push_back("chlorine");
+	BasisList["augmentation-cc-pVDZ"].push_back("argon");
+	BasisList["augmentation-cc-pVDZ"].push_back("gallium");
+	BasisList["augmentation-cc-pVDZ"].push_back("germanium");
+	BasisList["augmentation-cc-pVDZ"].push_back("arsenic");
+	BasisList["augmentation-cc-pVDZ"].push_back("selenium");
+	BasisList["augmentation-cc-pVDZ"].push_back("bromine");
+	BasisList["augmentation-cc-pVDZ"].push_back("krypton");
+	BasisList["augmentation-cc-pVDZ-RI"].push_back("hydrogen");
+	BasisList["augmentation-cc-pVDZ-RI"].push_back("helium");
+	BasisList["augmentation-cc-pVDZ-RI"].push_back("boron");
+	BasisList["augmentation-cc-pVDZ-RI"].push_back("carbon");
+	BasisList["augmentation-cc-pVDZ-RI"].push_back("nitrogen");
+	BasisList["augmentation-cc-pVDZ-RI"].push_back("oxygen");
+	BasisList["augmentation-cc-pVDZ-RI"].push_back("fluorine");
+	BasisList["augmentation-cc-pVDZ-RI"].push_back("neon");
+	BasisList["augmentation-cc-pVDZ-RI"].push_back("aluminum");
+	BasisList["augmentation-cc-pVDZ-RI"].push_back("silicon");
+	BasisList["augmentation-cc-pVDZ-RI"].push_back("phosphorus");
+	BasisList["augmentation-cc-pVDZ-RI"].push_back("sulfur");
+	BasisList["augmentation-cc-pVDZ-RI"].push_back("chlorine");
+	BasisList["augmentation-cc-pVDZ-RI"].push_back("argon");
+	BasisList["augmentation-cc-pVQZ-DK"].push_back("scandium");
+	BasisList["augmentation-cc-pVQZ-DK"].push_back("titanium");
+	BasisList["augmentation-cc-pVQZ-DK"].push_back("vanadium");
+	BasisList["augmentation-cc-pVQZ-DK"].push_back("chromium");
+	BasisList["augmentation-cc-pVQZ-DK"].push_back("manganese");
+	BasisList["augmentation-cc-pVQZ-DK"].push_back("iron");
+	BasisList["augmentation-cc-pVQZ-DK"].push_back("cobalt");
+	BasisList["augmentation-cc-pVQZ-DK"].push_back("nickel");
+	BasisList["augmentation-cc-pVQZ-DK"].push_back("copper");
+	BasisList["augmentation-cc-pVQZ-DK"].push_back("zinc");
+	BasisList["augmentation-cc-pVQZ"].push_back("hydrogen");
+	BasisList["augmentation-cc-pVQZ"].push_back("boron");
+	BasisList["augmentation-cc-pVQZ"].push_back("carbon");
+	BasisList["augmentation-cc-pVQZ"].push_back("nitrogen");
+	BasisList["augmentation-cc-pVQZ"].push_back("oxygen");
+	BasisList["augmentation-cc-pVQZ"].push_back("fluorine");
+	BasisList["augmentation-cc-pVQZ"].push_back("neon");
+	BasisList["augmentation-cc-pVQZ"].push_back("aluminum");
+	BasisList["augmentation-cc-pVQZ"].push_back("silicon");
+	BasisList["augmentation-cc-pVQZ"].push_back("phosphorus");
+	BasisList["augmentation-cc-pVQZ"].push_back("sulfur");
+	BasisList["augmentation-cc-pVQZ"].push_back("chlorine");
+	BasisList["augmentation-cc-pVQZ"].push_back("argon");
+	BasisList["augmentation-cc-pVQZ"].push_back("gallium");
+	BasisList["augmentation-cc-pVQZ"].push_back("germanium");
+	BasisList["augmentation-cc-pVQZ"].push_back("arsenic");
+	BasisList["augmentation-cc-pVQZ"].push_back("selenium");
+	BasisList["augmentation-cc-pVQZ"].push_back("bromine");
+	BasisList["augmentation-cc-pVQZ"].push_back("krypton");
+	BasisList["augmentation-cc-pVQZ"].push_back("scandium");
+	BasisList["augmentation-cc-pVQZ"].push_back("titanium");
+	BasisList["augmentation-cc-pVQZ"].push_back("vanadium");
+	BasisList["augmentation-cc-pVQZ"].push_back("chromium");
+	BasisList["augmentation-cc-pVQZ"].push_back("manganese");
+	BasisList["augmentation-cc-pVQZ"].push_back("iron");
+	BasisList["augmentation-cc-pVQZ"].push_back("cobalt");
+	BasisList["augmentation-cc-pVQZ"].push_back("nickel");
+	BasisList["augmentation-cc-pVQZ"].push_back("copper");
+	BasisList["augmentation-cc-pVQZ"].push_back("zinc");
+	BasisList["augmentation-cc-pVQZ-RI"].push_back("hydrogen");
+	BasisList["augmentation-cc-pVQZ-RI"].push_back("helium");
+	BasisList["augmentation-cc-pVQZ-RI"].push_back("boron");
+	BasisList["augmentation-cc-pVQZ-RI"].push_back("carbon");
+	BasisList["augmentation-cc-pVQZ-RI"].push_back("nitrogen");
+	BasisList["augmentation-cc-pVQZ-RI"].push_back("oxygen");
+	BasisList["augmentation-cc-pVQZ-RI"].push_back("fluorine");
+	BasisList["augmentation-cc-pVQZ-RI"].push_back("neon");
+	BasisList["augmentation-cc-pVQZ-RI"].push_back("aluminum");
+	BasisList["augmentation-cc-pVQZ-RI"].push_back("silicon");
+	BasisList["augmentation-cc-pVQZ-RI"].push_back("phosphorus");
+	BasisList["augmentation-cc-pVQZ-RI"].push_back("sulfur");
+	BasisList["augmentation-cc-pVQZ-RI"].push_back("chlorine");
+	BasisList["augmentation-cc-pVQZ-RI"].push_back("argon");
+	BasisList["augmentation-cc-pVTZ-DK"].push_back("scandium");
+	BasisList["augmentation-cc-pVTZ-DK"].push_back("titanium");
+	BasisList["augmentation-cc-pVTZ-DK"].push_back("vanadium");
+	BasisList["augmentation-cc-pVTZ-DK"].push_back("chromium");
+	BasisList["augmentation-cc-pVTZ-DK"].push_back("manganese");
+	BasisList["augmentation-cc-pVTZ-DK"].push_back("iron");
+	BasisList["augmentation-cc-pVTZ-DK"].push_back("cobalt");
+	BasisList["augmentation-cc-pVTZ-DK"].push_back("nickel");
+	BasisList["augmentation-cc-pVTZ-DK"].push_back("copper");
+	BasisList["augmentation-cc-pVTZ-DK"].push_back("zinc");
+	BasisList["augmentation-cc-pVTZ"].push_back("hydrogen");
+	BasisList["augmentation-cc-pVTZ"].push_back("boron");
+	BasisList["augmentation-cc-pVTZ"].push_back("carbon");
+	BasisList["augmentation-cc-pVTZ"].push_back("nitrogen");
+	BasisList["augmentation-cc-pVTZ"].push_back("oxygen");
+	BasisList["augmentation-cc-pVTZ"].push_back("fluorine");
+	BasisList["augmentation-cc-pVTZ"].push_back("neon");
+	BasisList["augmentation-cc-pVTZ"].push_back("aluminum");
+	BasisList["augmentation-cc-pVTZ"].push_back("silicon");
+	BasisList["augmentation-cc-pVTZ"].push_back("phosphorus");
+	BasisList["augmentation-cc-pVTZ"].push_back("sulfur");
+	BasisList["augmentation-cc-pVTZ"].push_back("chlorine");
+	BasisList["augmentation-cc-pVTZ"].push_back("argon");
+	BasisList["augmentation-cc-pVTZ"].push_back("gallium");
+	BasisList["augmentation-cc-pVTZ"].push_back("germanium");
+	BasisList["augmentation-cc-pVTZ"].push_back("arsenic");
+	BasisList["augmentation-cc-pVTZ"].push_back("selenium");
+	BasisList["augmentation-cc-pVTZ"].push_back("bromine");
+	BasisList["augmentation-cc-pVTZ"].push_back("krypton");
+	BasisList["augmentation-cc-pVTZ"].push_back("scandium");
+	BasisList["augmentation-cc-pVTZ"].push_back("titanium");
+	BasisList["augmentation-cc-pVTZ"].push_back("vanadium");
+	BasisList["augmentation-cc-pVTZ"].push_back("chromium");
+	BasisList["augmentation-cc-pVTZ"].push_back("manganese");
+	BasisList["augmentation-cc-pVTZ"].push_back("iron");
+	BasisList["augmentation-cc-pVTZ"].push_back("cobalt");
+	BasisList["augmentation-cc-pVTZ"].push_back("nickel");
+	BasisList["augmentation-cc-pVTZ"].push_back("copper");
+	BasisList["augmentation-cc-pVTZ"].push_back("zinc");
+	BasisList["augmentation-cc-pVTZ-RI"].push_back("hydrogen");
+	BasisList["augmentation-cc-pVTZ-RI"].push_back("helium");
+	BasisList["augmentation-cc-pVTZ-RI"].push_back("boron");
+	BasisList["augmentation-cc-pVTZ-RI"].push_back("carbon");
+	BasisList["augmentation-cc-pVTZ-RI"].push_back("nitrogen");
+	BasisList["augmentation-cc-pVTZ-RI"].push_back("oxygen");
+	BasisList["augmentation-cc-pVTZ-RI"].push_back("fluorine");
+	BasisList["augmentation-cc-pVTZ-RI"].push_back("neon");
+	BasisList["augmentation-cc-pVTZ-RI"].push_back("aluminum");
+	BasisList["augmentation-cc-pVTZ-RI"].push_back("silicon");
+	BasisList["augmentation-cc-pVTZ-RI"].push_back("phosphorus");
+	BasisList["augmentation-cc-pVTZ-RI"].push_back("sulfur");
+	BasisList["augmentation-cc-pVTZ-RI"].push_back("chlorine");
+	BasisList["augmentation-cc-pVTZ-RI"].push_back("argon");
+	BasisList["cc-pCV5Z"].push_back("boron");
+	BasisList["cc-pCV5Z"].push_back("carbon");
+	BasisList["cc-pCV5Z"].push_back("nitrogen");
+	BasisList["cc-pCV5Z"].push_back("oxygen");
+	BasisList["cc-pCV5Z"].push_back("fluorine");
+	BasisList["cc-pCV5Z"].push_back("neon");
+	BasisList["cc-pCVDZ"].push_back("lithium");
+	BasisList["cc-pCVDZ"].push_back("boron");
+	BasisList["cc-pCVDZ"].push_back("carbon");
+	BasisList["cc-pCVDZ"].push_back("nitrogen");
+	BasisList["cc-pCVDZ"].push_back("oxygen");
+	BasisList["cc-pCVDZ"].push_back("fluorine");
+	BasisList["cc-pCVDZ"].push_back("neon");
+	BasisList["cc-pCVDZ"].push_back("sodium");
+	BasisList["cc-pCVDZ"].push_back("magnesium");
+	BasisList["cc-pCVDZ"].push_back("aluminum");
+	BasisList["cc-pCVDZ"].push_back("silicon");
+	BasisList["cc-pCVDZ"].push_back("phosphorus");
+	BasisList["cc-pCVDZ"].push_back("sulfur");
+	BasisList["cc-pCVDZ"].push_back("chlorine");
+	BasisList["cc-pCVDZ"].push_back("argon");
+	BasisList["cc-pCVQZ"].push_back("lithium");
+	BasisList["cc-pCVQZ"].push_back("boron");
+	BasisList["cc-pCVQZ"].push_back("carbon");
+	BasisList["cc-pCVQZ"].push_back("nitrogen");
+	BasisList["cc-pCVQZ"].push_back("oxygen");
+	BasisList["cc-pCVQZ"].push_back("fluorine");
+	BasisList["cc-pCVQZ"].push_back("neon");
+	BasisList["cc-pCVQZ"].push_back("sodium");
+	BasisList["cc-pCVQZ"].push_back("magnesium");
+	BasisList["cc-pCVQZ"].push_back("aluminum");
+	BasisList["cc-pCVQZ"].push_back("silicon");
+	BasisList["cc-pCVQZ"].push_back("phosphorus");
+	BasisList["cc-pCVQZ"].push_back("sulfur");
+	BasisList["cc-pCVQZ"].push_back("chlorine");
+	BasisList["cc-pCVQZ"].push_back("argon");
+	BasisList["cc-pCVTZ"].push_back("lithium");
+	BasisList["cc-pCVTZ"].push_back("boron");
+	BasisList["cc-pCVTZ"].push_back("carbon");
+	BasisList["cc-pCVTZ"].push_back("nitrogen");
+	BasisList["cc-pCVTZ"].push_back("oxygen");
+	BasisList["cc-pCVTZ"].push_back("fluorine");
+	BasisList["cc-pCVTZ"].push_back("neon");
+	BasisList["cc-pCVTZ"].push_back("sodium");
+	BasisList["cc-pCVTZ"].push_back("magnesium");
+	BasisList["cc-pCVTZ"].push_back("aluminum");
+	BasisList["cc-pCVTZ"].push_back("silicon");
+	BasisList["cc-pCVTZ"].push_back("phosphorus");
+	BasisList["cc-pCVTZ"].push_back("sulfur");
+	BasisList["cc-pCVTZ"].push_back("chlorine");
+	BasisList["cc-pCVTZ"].push_back("argon");
+	BasisList["cc-pV5Z-DK"].push_back("hydrogen");
+	BasisList["cc-pV5Z-DK"].push_back("helium");
+	BasisList["cc-pV5Z-DK"].push_back("lithium");
+	BasisList["cc-pV5Z-DK"].push_back("beryllium");
+	BasisList["cc-pV5Z-DK"].push_back("boron");
+	BasisList["cc-pV5Z-DK"].push_back("carbon");
+	BasisList["cc-pV5Z-DK"].push_back("nitrogen");
+	BasisList["cc-pV5Z-DK"].push_back("oxygen");
+	BasisList["cc-pV5Z-DK"].push_back("fluorine");
+	BasisList["cc-pV5Z-DK"].push_back("neon");
+	BasisList["cc-pV5Z-DK"].push_back("aluminum");
+	BasisList["cc-pV5Z-DK"].push_back("silicon");
+	BasisList["cc-pV5Z-DK"].push_back("phosphorus");
+	BasisList["cc-pV5Z-DK"].push_back("sulfur");
+	BasisList["cc-pV5Z-DK"].push_back("chlorine");
+	BasisList["cc-pV5Z-DK"].push_back("argon");
+	BasisList["cc-pV5Z-DK"].push_back("gallium");
+	BasisList["cc-pV5Z-DK"].push_back("germanium");
+	BasisList["cc-pV5Z-DK"].push_back("arsenic");
+	BasisList["cc-pV5Z-DK"].push_back("selenium");
+	BasisList["cc-pV5Z-DK"].push_back("bromine");
+	BasisList["cc-pV5Z-DK"].push_back("krypton");
+	BasisList["cc-pV5Z-DK"].push_back("scandium");
+	BasisList["cc-pV5Z-DK"].push_back("titanium");
+	BasisList["cc-pV5Z-DK"].push_back("vanadium");
+	BasisList["cc-pV5Z-DK"].push_back("chromium");
+	BasisList["cc-pV5Z-DK"].push_back("manganese");
+	BasisList["cc-pV5Z-DK"].push_back("iron");
+	BasisList["cc-pV5Z-DK"].push_back("cobalt");
+	BasisList["cc-pV5Z-DK"].push_back("nickel");
+	BasisList["cc-pV5Z-DK"].push_back("copper");
+	BasisList["cc-pV5Z-DK"].push_back("zinc");
+	BasisList["cc-pV5Z"].push_back("hydrogen");
+	BasisList["cc-pV5Z"].push_back("helium");
+	BasisList["cc-pV5Z"].push_back("lithium");
+	BasisList["cc-pV5Z"].push_back("beryllium");
+	BasisList["cc-pV5Z"].push_back("boron");
+	BasisList["cc-pV5Z"].push_back("carbon");
+	BasisList["cc-pV5Z"].push_back("nitrogen");
+	BasisList["cc-pV5Z"].push_back("oxygen");
+	BasisList["cc-pV5Z"].push_back("fluorine");
+	BasisList["cc-pV5Z"].push_back("neon");
+	BasisList["cc-pV5Z"].push_back("sodium");
+	BasisList["cc-pV5Z"].push_back("magnesium");
+	BasisList["cc-pV5Z"].push_back("aluminum");
+	BasisList["cc-pV5Z"].push_back("silicon");
+	BasisList["cc-pV5Z"].push_back("phosphorus");
+	BasisList["cc-pV5Z"].push_back("sulfur");
+	BasisList["cc-pV5Z"].push_back("chlorine");
+	BasisList["cc-pV5Z"].push_back("argon");
+	BasisList["cc-pV5Z"].push_back("calcium");
+	BasisList["cc-pV5Z"].push_back("gallium");
+	BasisList["cc-pV5Z"].push_back("germanium");
+	BasisList["cc-pV5Z"].push_back("arsenic");
+	BasisList["cc-pV5Z"].push_back("selenium");
+	BasisList["cc-pV5Z"].push_back("bromine");
+	BasisList["cc-pV5Z"].push_back("krypton");
+	BasisList["cc-pV5Z"].push_back("scandium");
+	BasisList["cc-pV5Z"].push_back("titanium");
+	BasisList["cc-pV5Z"].push_back("vanadium");
+	BasisList["cc-pV5Z"].push_back("chromium");
+	BasisList["cc-pV5Z"].push_back("manganese");
+	BasisList["cc-pV5Z"].push_back("iron");
+	BasisList["cc-pV5Z"].push_back("cobalt");
+	BasisList["cc-pV5Z"].push_back("nickel");
+	BasisList["cc-pV5Z"].push_back("copper");
+	BasisList["cc-pV5Z"].push_back("zinc");
+	BasisList["cc-pV5Z-RI"].push_back("hydrogen");
+	BasisList["cc-pV5Z-RI"].push_back("helium");
+	BasisList["cc-pV5Z-RI"].push_back("lithium");
+	BasisList["cc-pV5Z-RI"].push_back("beryllium");
+	BasisList["cc-pV5Z-RI"].push_back("boron");
+	BasisList["cc-pV5Z-RI"].push_back("carbon");
+	BasisList["cc-pV5Z-RI"].push_back("nitrogen");
+	BasisList["cc-pV5Z-RI"].push_back("oxygen");
+	BasisList["cc-pV5Z-RI"].push_back("fluorine");
+	BasisList["cc-pV5Z-RI"].push_back("neon");
+	BasisList["cc-pV5Z-RI"].push_back("sodium");
+	BasisList["cc-pV5Z-RI"].push_back("magnesium");
+	BasisList["cc-pV5Z-RI"].push_back("aluminum");
+	BasisList["cc-pV5Z-RI"].push_back("silicon");
+	BasisList["cc-pV5Z-RI"].push_back("phosphorus");
+	BasisList["cc-pV5Z-RI"].push_back("sulfur");
+	BasisList["cc-pV5Z-RI"].push_back("chlorine");
+	BasisList["cc-pV5Z-RI"].push_back("argon");
+	BasisList["cc-pV6Z"].push_back("hydrogen");
+	BasisList["cc-pV6Z"].push_back("helium");
+	BasisList["cc-pV6Z"].push_back("boron");
+	BasisList["cc-pV6Z"].push_back("carbon");
+	BasisList["cc-pV6Z"].push_back("nitrogen");
+	BasisList["cc-pV6Z"].push_back("oxygen");
+	BasisList["cc-pV6Z"].push_back("fluorine");
+	BasisList["cc-pV6Z"].push_back("neon");
+	BasisList["cc-pV6Z"].push_back("aluminum");
+	BasisList["cc-pV6Z"].push_back("silicon");
+	BasisList["cc-pV6Z"].push_back("phosphorus");
+	BasisList["cc-pV6Z"].push_back("sulfur");
+	BasisList["cc-pV6Z"].push_back("chlorine");
+	BasisList["cc-pV6Z"].push_back("argon");
+	BasisList["cc-pV6Z-RI"].push_back("hydrogen");
+	BasisList["cc-pV6Z-RI"].push_back("helium");
+	BasisList["cc-pV6Z-RI"].push_back("lithium");
+	BasisList["cc-pV6Z-RI"].push_back("beryllium");
+	BasisList["cc-pV6Z-RI"].push_back("boron");
+	BasisList["cc-pV6Z-RI"].push_back("carbon");
+	BasisList["cc-pV6Z-RI"].push_back("nitrogen");
+	BasisList["cc-pV6Z-RI"].push_back("oxygen");
+	BasisList["cc-pV6Z-RI"].push_back("fluorine");
+	BasisList["cc-pV6Z-RI"].push_back("neon");
+	BasisList["cc-pV6Z-RI"].push_back("sodium");
+	BasisList["cc-pV6Z-RI"].push_back("magnesium");
+	BasisList["cc-pV6Z-RI"].push_back("aluminum");
+	BasisList["cc-pV6Z-RI"].push_back("silicon");
+	BasisList["cc-pV6Z-RI"].push_back("phosphorus");
+	BasisList["cc-pV6Z-RI"].push_back("sulfur");
+	BasisList["cc-pV6Z-RI"].push_back("chlorine");
+	BasisList["cc-pV6Z-RI"].push_back("argon");
+	BasisList["cc-pVDZ-DK"].push_back("hydrogen");
+	BasisList["cc-pVDZ-DK"].push_back("helium");
+	BasisList["cc-pVDZ-DK"].push_back("boron");
+	BasisList["cc-pVDZ-DK"].push_back("carbon");
+	BasisList["cc-pVDZ-DK"].push_back("nitrogen");
+	BasisList["cc-pVDZ-DK"].push_back("oxygen");
+	BasisList["cc-pVDZ-DK"].push_back("fluorine");
+	BasisList["cc-pVDZ-DK"].push_back("neon");
+	BasisList["cc-pVDZ-DK"].push_back("aluminum");
+	BasisList["cc-pVDZ-DK"].push_back("silicon");
+	BasisList["cc-pVDZ-DK"].push_back("phosphorus");
+	BasisList["cc-pVDZ-DK"].push_back("sulfur");
+	BasisList["cc-pVDZ-DK"].push_back("chlorine");
+	BasisList["cc-pVDZ-DK"].push_back("argon");
+	BasisList["cc-pVDZ-DK"].push_back("gallium");
+	BasisList["cc-pVDZ-DK"].push_back("germanium");
+	BasisList["cc-pVDZ-DK"].push_back("arsenic");
+	BasisList["cc-pVDZ-DK"].push_back("selenium");
+	BasisList["cc-pVDZ-DK"].push_back("bromine");
+	BasisList["cc-pVDZ-DK"].push_back("krypton");
+	BasisList["cc-pVDZ"].push_back("hydrogen");
+	BasisList["cc-pVDZ"].push_back("helium");
+	BasisList["cc-pVDZ"].push_back("lithium");
+	BasisList["cc-pVDZ"].push_back("beryllium");
+	BasisList["cc-pVDZ"].push_back("boron");
+	BasisList["cc-pVDZ"].push_back("carbon");
+	BasisList["cc-pVDZ"].push_back("nitrogen");
+	BasisList["cc-pVDZ"].push_back("oxygen");
+	BasisList["cc-pVDZ"].push_back("fluorine");
+	BasisList["cc-pVDZ"].push_back("neon");
+	BasisList["cc-pVDZ"].push_back("sodium");
+	BasisList["cc-pVDZ"].push_back("magnesium");
+	BasisList["cc-pVDZ"].push_back("aluminum");
+	BasisList["cc-pVDZ"].push_back("silicon");
+	BasisList["cc-pVDZ"].push_back("phosphorus");
+	BasisList["cc-pVDZ"].push_back("sulfur");
+	BasisList["cc-pVDZ"].push_back("chlorine");
+	BasisList["cc-pVDZ"].push_back("argon");
+	BasisList["cc-pVDZ"].push_back("calcium");
+	BasisList["cc-pVDZ"].push_back("gallium");
+	BasisList["cc-pVDZ"].push_back("germanium");
+	BasisList["cc-pVDZ"].push_back("arsenic");
+	BasisList["cc-pVDZ"].push_back("selenium");
+	BasisList["cc-pVDZ"].push_back("bromine");
+	BasisList["cc-pVDZ"].push_back("krypton");
+	BasisList["cc-pVDZ-RI"].push_back("hydrogen");
+	BasisList["cc-pVDZ-RI"].push_back("helium");
+	BasisList["cc-pVDZ-RI"].push_back("lithium");
+	BasisList["cc-pVDZ-RI"].push_back("beryllium");
+	BasisList["cc-pVDZ-RI"].push_back("boron");
+	BasisList["cc-pVDZ-RI"].push_back("carbon");
+	BasisList["cc-pVDZ-RI"].push_back("nitrogen");
+	BasisList["cc-pVDZ-RI"].push_back("oxygen");
+	BasisList["cc-pVDZ-RI"].push_back("fluorine");
+	BasisList["cc-pVDZ-RI"].push_back("neon");
+	BasisList["cc-pVDZ-RI"].push_back("sodium");
+	BasisList["cc-pVDZ-RI"].push_back("magnesium");
+	BasisList["cc-pVDZ-RI"].push_back("aluminum");
+	BasisList["cc-pVDZ-RI"].push_back("silicon");
+	BasisList["cc-pVDZ-RI"].push_back("phosphorus");
+	BasisList["cc-pVDZ-RI"].push_back("sulfur");
+	BasisList["cc-pVDZ-RI"].push_back("chlorine");
+	BasisList["cc-pVDZ-RI"].push_back("argon");
+	BasisList["cc-pVQZ-DK"].push_back("hydrogen");
+	BasisList["cc-pVQZ-DK"].push_back("helium");
+	BasisList["cc-pVQZ-DK"].push_back("boron");
+	BasisList["cc-pVQZ-DK"].push_back("carbon");
+	BasisList["cc-pVQZ-DK"].push_back("nitrogen");
+	BasisList["cc-pVQZ-DK"].push_back("oxygen");
+	BasisList["cc-pVQZ-DK"].push_back("fluorine");
+	BasisList["cc-pVQZ-DK"].push_back("neon");
+	BasisList["cc-pVQZ-DK"].push_back("aluminum");
+	BasisList["cc-pVQZ-DK"].push_back("silicon");
+	BasisList["cc-pVQZ-DK"].push_back("phosphorus");
+	BasisList["cc-pVQZ-DK"].push_back("sulfur");
+	BasisList["cc-pVQZ-DK"].push_back("chlorine");
+	BasisList["cc-pVQZ-DK"].push_back("argon");
+	BasisList["cc-pVQZ-DK"].push_back("gallium");
+	BasisList["cc-pVQZ-DK"].push_back("germanium");
+	BasisList["cc-pVQZ-DK"].push_back("arsenic");
+	BasisList["cc-pVQZ-DK"].push_back("selenium");
+	BasisList["cc-pVQZ-DK"].push_back("bromine");
+	BasisList["cc-pVQZ-DK"].push_back("krypton");
+	BasisList["cc-pVQZ-DK"].push_back("scandium");
+	BasisList["cc-pVQZ-DK"].push_back("titanium");
+	BasisList["cc-pVQZ-DK"].push_back("vanadium");
+	BasisList["cc-pVQZ-DK"].push_back("chromium");
+	BasisList["cc-pVQZ-DK"].push_back("manganese");
+	BasisList["cc-pVQZ-DK"].push_back("iron");
+	BasisList["cc-pVQZ-DK"].push_back("cobalt");
+	BasisList["cc-pVQZ-DK"].push_back("nickel");
+	BasisList["cc-pVQZ-DK"].push_back("copper");
+	BasisList["cc-pVQZ-DK"].push_back("zinc");
+	BasisList["cc-pVQZ"].push_back("hydrogen");
+	BasisList["cc-pVQZ"].push_back("helium");
+	BasisList["cc-pVQZ"].push_back("lithium");
+	BasisList["cc-pVQZ"].push_back("beryllium");
+	BasisList["cc-pVQZ"].push_back("boron");
+	BasisList["cc-pVQZ"].push_back("carbon");
+	BasisList["cc-pVQZ"].push_back("nitrogen");
+	BasisList["cc-pVQZ"].push_back("oxygen");
+	BasisList["cc-pVQZ"].push_back("fluorine");
+	BasisList["cc-pVQZ"].push_back("neon");
+	BasisList["cc-pVQZ"].push_back("sodium");
+	BasisList["cc-pVQZ"].push_back("magnesium");
+	BasisList["cc-pVQZ"].push_back("aluminum");
+	BasisList["cc-pVQZ"].push_back("silicon");
+	BasisList["cc-pVQZ"].push_back("phosphorus");
+	BasisList["cc-pVQZ"].push_back("sulfur");
+	BasisList["cc-pVQZ"].push_back("chlorine");
+	BasisList["cc-pVQZ"].push_back("argon");
+	BasisList["cc-pVQZ"].push_back("calcium");
+	BasisList["cc-pVQZ"].push_back("gallium");
+	BasisList["cc-pVQZ"].push_back("germanium");
+	BasisList["cc-pVQZ"].push_back("arsenic");
+	BasisList["cc-pVQZ"].push_back("selenium");
+	BasisList["cc-pVQZ"].push_back("bromine");
+	BasisList["cc-pVQZ"].push_back("krypton");
+	BasisList["cc-pVQZ"].push_back("scandium");
+	BasisList["cc-pVQZ"].push_back("titanium");
+	BasisList["cc-pVQZ"].push_back("vanadium");
+	BasisList["cc-pVQZ"].push_back("chromium");
+	BasisList["cc-pVQZ"].push_back("manganese");
+	BasisList["cc-pVQZ"].push_back("iron");
+	BasisList["cc-pVQZ"].push_back("cobalt");
+	BasisList["cc-pVQZ"].push_back("nickel");
+	BasisList["cc-pVQZ"].push_back("copper");
+	BasisList["cc-pVQZ"].push_back("zinc");
+	BasisList["cc-pVQZ-RI"].push_back("hydrogen");
+	BasisList["cc-pVQZ-RI"].push_back("helium");
+	BasisList["cc-pVQZ-RI"].push_back("lithium");
+	BasisList["cc-pVQZ-RI"].push_back("beryllium");
+	BasisList["cc-pVQZ-RI"].push_back("boron");
+	BasisList["cc-pVQZ-RI"].push_back("carbon");
+	BasisList["cc-pVQZ-RI"].push_back("nitrogen");
+	BasisList["cc-pVQZ-RI"].push_back("oxygen");
+	BasisList["cc-pVQZ-RI"].push_back("fluorine");
+	BasisList["cc-pVQZ-RI"].push_back("neon");
+	BasisList["cc-pVQZ-RI"].push_back("sodium");
+	BasisList["cc-pVQZ-RI"].push_back("magnesium");
+	BasisList["cc-pVQZ-RI"].push_back("aluminum");
+	BasisList["cc-pVQZ-RI"].push_back("silicon");
+	BasisList["cc-pVQZ-RI"].push_back("phosphorus");
+	BasisList["cc-pVQZ-RI"].push_back("sulfur");
+	BasisList["cc-pVQZ-RI"].push_back("chlorine");
+	BasisList["cc-pVQZ-RI"].push_back("argon");
+	BasisList["cc-pVTZ-DK"].push_back("hydrogen");
+	BasisList["cc-pVTZ-DK"].push_back("helium");
+	BasisList["cc-pVTZ-DK"].push_back("boron");
+	BasisList["cc-pVTZ-DK"].push_back("carbon");
+	BasisList["cc-pVTZ-DK"].push_back("nitrogen");
+	BasisList["cc-pVTZ-DK"].push_back("oxygen");
+	BasisList["cc-pVTZ-DK"].push_back("fluorine");
+	BasisList["cc-pVTZ-DK"].push_back("neon");
+	BasisList["cc-pVTZ-DK"].push_back("aluminum");
+	BasisList["cc-pVTZ-DK"].push_back("silicon");
+	BasisList["cc-pVTZ-DK"].push_back("phosphorus");
+	BasisList["cc-pVTZ-DK"].push_back("sulfur");
+	BasisList["cc-pVTZ-DK"].push_back("chlorine");
+	BasisList["cc-pVTZ-DK"].push_back("argon");
+	BasisList["cc-pVTZ-DK"].push_back("gallium");
+	BasisList["cc-pVTZ-DK"].push_back("germanium");
+	BasisList["cc-pVTZ-DK"].push_back("arsenic");
+	BasisList["cc-pVTZ-DK"].push_back("selenium");
+	BasisList["cc-pVTZ-DK"].push_back("bromine");
+	BasisList["cc-pVTZ-DK"].push_back("krypton");
+	BasisList["cc-pVTZ-DK"].push_back("scandium");
+	BasisList["cc-pVTZ-DK"].push_back("titanium");
+	BasisList["cc-pVTZ-DK"].push_back("vanadium");
+	BasisList["cc-pVTZ-DK"].push_back("chromium");
+	BasisList["cc-pVTZ-DK"].push_back("manganese");
+	BasisList["cc-pVTZ-DK"].push_back("iron");
+	BasisList["cc-pVTZ-DK"].push_back("cobalt");
+	BasisList["cc-pVTZ-DK"].push_back("nickel");
+	BasisList["cc-pVTZ-DK"].push_back("copper");
+	BasisList["cc-pVTZ-DK"].push_back("zinc");
+	BasisList["cc-pVTZ"].push_back("hydrogen");
+	BasisList["cc-pVTZ"].push_back("helium");
+	BasisList["cc-pVTZ"].push_back("lithium");
+	BasisList["cc-pVTZ"].push_back("beryllium");
+	BasisList["cc-pVTZ"].push_back("boron");
+	BasisList["cc-pVTZ"].push_back("carbon");
+	BasisList["cc-pVTZ"].push_back("nitrogen");
+	BasisList["cc-pVTZ"].push_back("oxygen");
+	BasisList["cc-pVTZ"].push_back("fluorine");
+	BasisList["cc-pVTZ"].push_back("neon");
+	BasisList["cc-pVTZ"].push_back("sodium");
+	BasisList["cc-pVTZ"].push_back("magnesium");
+	BasisList["cc-pVTZ"].push_back("aluminum");
+	BasisList["cc-pVTZ"].push_back("silicon");
+	BasisList["cc-pVTZ"].push_back("phosphorus");
+	BasisList["cc-pVTZ"].push_back("sulfur");
+	BasisList["cc-pVTZ"].push_back("chlorine");
+	BasisList["cc-pVTZ"].push_back("argon");
+	BasisList["cc-pVTZ"].push_back("calcium");
+	BasisList["cc-pVTZ"].push_back("gallium");
+	BasisList["cc-pVTZ"].push_back("germanium");
+	BasisList["cc-pVTZ"].push_back("arsenic");
+	BasisList["cc-pVTZ"].push_back("selenium");
+	BasisList["cc-pVTZ"].push_back("bromine");
+	BasisList["cc-pVTZ"].push_back("krypton");
+	BasisList["cc-pVTZ"].push_back("scandium");
+	BasisList["cc-pVTZ"].push_back("titanium");
+	BasisList["cc-pVTZ"].push_back("vanadium");
+	BasisList["cc-pVTZ"].push_back("chromium");
+	BasisList["cc-pVTZ"].push_back("manganese");
+	BasisList["cc-pVTZ"].push_back("iron");
+	BasisList["cc-pVTZ"].push_back("cobalt");
+	BasisList["cc-pVTZ"].push_back("nickel");
+	BasisList["cc-pVTZ"].push_back("copper");
+	BasisList["cc-pVTZ"].push_back("zinc");
+	BasisList["cc-pVTZ-RI"].push_back("hydrogen");
+	BasisList["cc-pVTZ-RI"].push_back("helium");
+	BasisList["cc-pVTZ-RI"].push_back("lithium");
+	BasisList["cc-pVTZ-RI"].push_back("beryllium");
+	BasisList["cc-pVTZ-RI"].push_back("boron");
+	BasisList["cc-pVTZ-RI"].push_back("carbon");
+	BasisList["cc-pVTZ-RI"].push_back("nitrogen");
+	BasisList["cc-pVTZ-RI"].push_back("oxygen");
+	BasisList["cc-pVTZ-RI"].push_back("fluorine");
+	BasisList["cc-pVTZ-RI"].push_back("neon");
+	BasisList["cc-pVTZ-RI"].push_back("sodium");
+	BasisList["cc-pVTZ-RI"].push_back("magnesium");
+	BasisList["cc-pVTZ-RI"].push_back("aluminum");
+	BasisList["cc-pVTZ-RI"].push_back("silicon");
+	BasisList["cc-pVTZ-RI"].push_back("phosphorus");
+	BasisList["cc-pVTZ-RI"].push_back("sulfur");
+	BasisList["cc-pVTZ-RI"].push_back("chlorine");
+	BasisList["cc-pVTZ-RI"].push_back("argon");
+	BasisList["cc-pwCV5Z-DK"].push_back("scandium");
+	BasisList["cc-pwCV5Z-DK"].push_back("titanium");
+	BasisList["cc-pwCV5Z-DK"].push_back("vanadium");
+	BasisList["cc-pwCV5Z-DK"].push_back("chromium");
+	BasisList["cc-pwCV5Z-DK"].push_back("manganese");
+	BasisList["cc-pwCV5Z-DK"].push_back("iron");
+	BasisList["cc-pwCV5Z-DK"].push_back("cobalt");
+	BasisList["cc-pwCV5Z-DK"].push_back("nickel");
+	BasisList["cc-pwCV5Z-DK"].push_back("copper");
+	BasisList["cc-pwCV5Z-DK"].push_back("zinc");
+	BasisList["cc-pwCV5Z"].push_back("scandium");
+	BasisList["cc-pwCV5Z"].push_back("titanium");
+	BasisList["cc-pwCV5Z"].push_back("vanadium");
+	BasisList["cc-pwCV5Z"].push_back("chromium");
+	BasisList["cc-pwCV5Z"].push_back("manganese");
+	BasisList["cc-pwCV5Z"].push_back("iron");
+	BasisList["cc-pwCV5Z"].push_back("cobalt");
+	BasisList["cc-pwCV5Z"].push_back("nickel");
+	BasisList["cc-pwCV5Z"].push_back("copper");
+	BasisList["cc-pwCV5Z"].push_back("zinc");
+	BasisList["cc-pwCVQZ-DK"].push_back("scandium");
+	BasisList["cc-pwCVQZ-DK"].push_back("titanium");
+	BasisList["cc-pwCVQZ-DK"].push_back("vanadium");
+	BasisList["cc-pwCVQZ-DK"].push_back("chromium");
+	BasisList["cc-pwCVQZ-DK"].push_back("manganese");
+	BasisList["cc-pwCVQZ-DK"].push_back("iron");
+	BasisList["cc-pwCVQZ-DK"].push_back("cobalt");
+	BasisList["cc-pwCVQZ-DK"].push_back("nickel");
+	BasisList["cc-pwCVQZ-DK"].push_back("copper");
+	BasisList["cc-pwCVQZ-DK"].push_back("zinc");
+	BasisList["cc-pwCVQZ"].push_back("scandium");
+	BasisList["cc-pwCVQZ"].push_back("titanium");
+	BasisList["cc-pwCVQZ"].push_back("vanadium");
+	BasisList["cc-pwCVQZ"].push_back("chromium");
+	BasisList["cc-pwCVQZ"].push_back("manganese");
+	BasisList["cc-pwCVQZ"].push_back("iron");
+	BasisList["cc-pwCVQZ"].push_back("cobalt");
+	BasisList["cc-pwCVQZ"].push_back("nickel");
+	BasisList["cc-pwCVQZ"].push_back("copper");
+	BasisList["cc-pwCVQZ"].push_back("zinc");
+	BasisList["cc-pwCVTZ-DK"].push_back("scandium");
+	BasisList["cc-pwCVTZ-DK"].push_back("titanium");
+	BasisList["cc-pwCVTZ-DK"].push_back("vanadium");
+	BasisList["cc-pwCVTZ-DK"].push_back("chromium");
+	BasisList["cc-pwCVTZ-DK"].push_back("manganese");
+	BasisList["cc-pwCVTZ-DK"].push_back("iron");
+	BasisList["cc-pwCVTZ-DK"].push_back("cobalt");
+	BasisList["cc-pwCVTZ-DK"].push_back("nickel");
+	BasisList["cc-pwCVTZ-DK"].push_back("copper");
+	BasisList["cc-pwCVTZ-DK"].push_back("zinc");
+	BasisList["cc-pwCVTZ"].push_back("scandium");
+	BasisList["cc-pwCVTZ"].push_back("titanium");
+	BasisList["cc-pwCVTZ"].push_back("vanadium");
+	BasisList["cc-pwCVTZ"].push_back("chromium");
+	BasisList["cc-pwCVTZ"].push_back("manganese");
+	BasisList["cc-pwCVTZ"].push_back("iron");
+	BasisList["cc-pwCVTZ"].push_back("cobalt");
+	BasisList["cc-pwCVTZ"].push_back("nickel");
+	BasisList["cc-pwCVTZ"].push_back("copper");
+	BasisList["cc-pwCVTZ"].push_back("zinc");
+	BasisList["DZ(Dunning)"].push_back("hydrogen");
+	BasisList["DZ(Dunning)"].push_back("lithium");
+	BasisList["DZ(Dunning)"].push_back("boron");
+	BasisList["DZ(Dunning)"].push_back("carbon");
+	BasisList["DZ(Dunning)"].push_back("nitrogen");
+	BasisList["DZ(Dunning)"].push_back("oxygen");
+	BasisList["DZ(Dunning)"].push_back("fluorine");
+	BasisList["DZ(Dunning)"].push_back("neon");
+	BasisList["DZ(Dunning)"].push_back("aluminum");
+	BasisList["DZ(Dunning)"].push_back("silicon");
+	BasisList["DZ(Dunning)"].push_back("phosphorus");
+	BasisList["DZ(Dunning)"].push_back("sulfur");
+	BasisList["DZ(Dunning)"].push_back("chlorine");
+	BasisList["DZP(Dunning)"].push_back("hydrogen");
+	BasisList["DZP(Dunning)"].push_back("lithium");
+	BasisList["DZP(Dunning)"].push_back("boron");
+	BasisList["DZP(Dunning)"].push_back("carbon");
+	BasisList["DZP(Dunning)"].push_back("nitrogen");
+	BasisList["DZP(Dunning)"].push_back("oxygen");
+	BasisList["DZP(Dunning)"].push_back("fluorine");
+	BasisList["DZP(Dunning)"].push_back("neon");
+	BasisList["DZP(Dunning)"].push_back("aluminum");
+	BasisList["DZP(Dunning)"].push_back("silicon");
+	BasisList["DZP(Dunning)"].push_back("phosphorus");
+	BasisList["DZP(Dunning)"].push_back("sulfur");
+	BasisList["DZP(Dunning)"].push_back("chlorine");
+	BasisList["DZP+Diffuse(Dunning)"].push_back("hydrogen");
+	BasisList["DZP+Diffuse(Dunning)"].push_back("boron");
+	BasisList["DZP+Diffuse(Dunning)"].push_back("carbon");
+	BasisList["DZP+Diffuse(Dunning)"].push_back("nitrogen");
+	BasisList["DZP+Diffuse(Dunning)"].push_back("oxygen");
+	BasisList["DZP+Diffuse(Dunning)"].push_back("fluorine");
+	BasisList["DZP+Diffuse(Dunning)"].push_back("neon");
+	BasisList["MIDI(Huzinaga)"].push_back("hydrogen");
+	BasisList["MIDI(Huzinaga)"].push_back("helium");
+	BasisList["MIDI(Huzinaga)"].push_back("lithium");
+	BasisList["MIDI(Huzinaga)"].push_back("beryllium");
+	BasisList["MIDI(Huzinaga)"].push_back("boron");
+	BasisList["MIDI(Huzinaga)"].push_back("carbon");
+	BasisList["MIDI(Huzinaga)"].push_back("nitrogen");
+	BasisList["MIDI(Huzinaga)"].push_back("oxygen");
+	BasisList["MIDI(Huzinaga)"].push_back("fluorine");
+	BasisList["MIDI(Huzinaga)"].push_back("neon");
+	BasisList["MIDI(Huzinaga)"].push_back("sodium");
+	BasisList["MIDI(Huzinaga)"].push_back("aluminum");
+	BasisList["MIDI(Huzinaga)"].push_back("silicon");
+	BasisList["MIDI(Huzinaga)"].push_back("phosphorus");
+	BasisList["MIDI(Huzinaga)"].push_back("sulfur");
+	BasisList["MIDI(Huzinaga)"].push_back("chlorine");
+	BasisList["MIDI(Huzinaga)"].push_back("argon");
+	BasisList["MIDI(Huzinaga)"].push_back("potassium");
+	BasisList["MINI(Huzinaga)"].push_back("hydrogen");
+	BasisList["MINI(Huzinaga)"].push_back("helium");
+	BasisList["MINI(Huzinaga)"].push_back("lithium");
+	BasisList["MINI(Huzinaga)"].push_back("beryllium");
+	BasisList["MINI(Huzinaga)"].push_back("boron");
+	BasisList["MINI(Huzinaga)"].push_back("carbon");
+	BasisList["MINI(Huzinaga)"].push_back("nitrogen");
+	BasisList["MINI(Huzinaga)"].push_back("oxygen");
+	BasisList["MINI(Huzinaga)"].push_back("fluorine");
+	BasisList["MINI(Huzinaga)"].push_back("neon");
+	BasisList["MINI(Huzinaga)"].push_back("sodium");
+	BasisList["MINI(Huzinaga)"].push_back("magnesium");
+	BasisList["MINI(Huzinaga)"].push_back("aluminum");
+	BasisList["MINI(Huzinaga)"].push_back("silicon");
+	BasisList["MINI(Huzinaga)"].push_back("phosphorus");
+	BasisList["MINI(Huzinaga)"].push_back("sulfur");
+	BasisList["MINI(Huzinaga)"].push_back("chlorine");
+	BasisList["MINI(Huzinaga)"].push_back("argon");
+	BasisList["MINI(Huzinaga)"].push_back("potassium");
+	BasisList["MINI(Huzinaga)"].push_back("calcium");
+	BasisList["MINI(Scaled)"].push_back("hydrogen");
+	BasisList["MINI(Scaled)"].push_back("helium");
+	BasisList["MINI(Scaled)"].push_back("lithium");
+	BasisList["MINI(Scaled)"].push_back("beryllium");
+	BasisList["MINI(Scaled)"].push_back("boron");
+	BasisList["MINI(Scaled)"].push_back("carbon");
+	BasisList["MINI(Scaled)"].push_back("nitrogen");
+	BasisList["MINI(Scaled)"].push_back("oxygen");
+	BasisList["MINI(Scaled)"].push_back("fluorine");
+	BasisList["MINI(Scaled)"].push_back("neon");
+	BasisList["MINI(Scaled)"].push_back("sodium");
+	BasisList["MINI(Scaled)"].push_back("magnesium");
+	BasisList["MINI(Scaled)"].push_back("aluminum");
+	BasisList["MINI(Scaled)"].push_back("silicon");
+	BasisList["MINI(Scaled)"].push_back("phosphorus");
+	BasisList["MINI(Scaled)"].push_back("sulfur");
+	BasisList["MINI(Scaled)"].push_back("chlorine");
+	BasisList["MINI(Scaled)"].push_back("argon");
+	BasisList["MINI(Scaled)"].push_back("potassium");
+	BasisList["MINI(Scaled)"].push_back("calcium");
+	BasisList["NASAAmesANO"].push_back("hydrogen");
+	BasisList["NASAAmesANO"].push_back("boron");
+	BasisList["NASAAmesANO"].push_back("carbon");
+	BasisList["NASAAmesANO"].push_back("nitrogen");
+	BasisList["NASAAmesANO"].push_back("oxygen");
+	BasisList["NASAAmesANO"].push_back("fluorine");
+	BasisList["NASAAmesANO"].push_back("neon");
+	BasisList["NASAAmesANO"].push_back("aluminum");
+	BasisList["NASAAmesANO"].push_back("phosphorus");
+	BasisList["NASAAmesANO"].push_back("titanium");
+	BasisList["NASAAmesANO"].push_back("iron");
+	BasisList["NASAAmesANO"].push_back("nickel");
+	BasisList["pc-0-aug"].push_back("hydrogen");
+	BasisList["pc-0-aug"].push_back("carbon");
+	BasisList["pc-0-aug"].push_back("nitrogen");
+	BasisList["pc-0-aug"].push_back("oxygen");
+	BasisList["pc-0-aug"].push_back("fluorine");
+	BasisList["pc-0-aug"].push_back("silicon");
+	BasisList["pc-0-aug"].push_back("phosphorus");
+	BasisList["pc-0-aug"].push_back("sulfur");
+	BasisList["pc-0-aug"].push_back("chlorine");
+	BasisList["pc-0"].push_back("hydrogen");
+	BasisList["pc-0"].push_back("carbon");
+	BasisList["pc-0"].push_back("nitrogen");
+	BasisList["pc-0"].push_back("oxygen");
+	BasisList["pc-0"].push_back("fluorine");
+	BasisList["pc-0"].push_back("silicon");
+	BasisList["pc-0"].push_back("phosphorus");
+	BasisList["pc-0"].push_back("sulfur");
+	BasisList["pc-0"].push_back("chlorine");
+	BasisList["pc-1-aug"].push_back("hydrogen");
+	BasisList["pc-1-aug"].push_back("carbon");
+	BasisList["pc-1-aug"].push_back("nitrogen");
+	BasisList["pc-1-aug"].push_back("oxygen");
+	BasisList["pc-1-aug"].push_back("fluorine");
+	BasisList["pc-1-aug"].push_back("silicon");
+	BasisList["pc-1-aug"].push_back("phosphorus");
+	BasisList["pc-1-aug"].push_back("sulfur");
+	BasisList["pc-1-aug"].push_back("chlorine");
+	BasisList["pc-1"].push_back("hydrogen");
+	BasisList["pc-1"].push_back("carbon");
+	BasisList["pc-1"].push_back("nitrogen");
+	BasisList["pc-1"].push_back("oxygen");
+	BasisList["pc-1"].push_back("fluorine");
+	BasisList["pc-1"].push_back("silicon");
+	BasisList["pc-1"].push_back("phosphorus");
+	BasisList["pc-1"].push_back("sulfur");
+	BasisList["pc-1"].push_back("chlorine");
+	BasisList["pc-2-aug"].push_back("hydrogen");
+	BasisList["pc-2-aug"].push_back("carbon");
+	BasisList["pc-2-aug"].push_back("nitrogen");
+	BasisList["pc-2-aug"].push_back("oxygen");
+	BasisList["pc-2-aug"].push_back("fluorine");
+	BasisList["pc-2-aug"].push_back("silicon");
+	BasisList["pc-2-aug"].push_back("phosphorus");
+	BasisList["pc-2-aug"].push_back("sulfur");
+	BasisList["pc-2-aug"].push_back("chlorine");
+	BasisList["pc-2"].push_back("hydrogen");
+	BasisList["pc-2"].push_back("carbon");
+	BasisList["pc-2"].push_back("nitrogen");
+	BasisList["pc-2"].push_back("oxygen");
+	BasisList["pc-2"].push_back("fluorine");
+	BasisList["pc-2"].push_back("silicon");
+	BasisList["pc-2"].push_back("phosphorus");
+	BasisList["pc-2"].push_back("sulfur");
+	BasisList["pc-2"].push_back("chlorine");
+	BasisList["pc-3-aug"].push_back("hydrogen");
+	BasisList["pc-3-aug"].push_back("carbon");
+	BasisList["pc-3-aug"].push_back("nitrogen");
+	BasisList["pc-3-aug"].push_back("oxygen");
+	BasisList["pc-3-aug"].push_back("fluorine");
+	BasisList["pc-3-aug"].push_back("silicon");
+	BasisList["pc-3-aug"].push_back("phosphorus");
+	BasisList["pc-3-aug"].push_back("sulfur");
+	BasisList["pc-3-aug"].push_back("chlorine");
+	BasisList["pc-3"].push_back("hydrogen");
+	BasisList["pc-3"].push_back("carbon");
+	BasisList["pc-3"].push_back("nitrogen");
+	BasisList["pc-3"].push_back("oxygen");
+	BasisList["pc-3"].push_back("fluorine");
+	BasisList["pc-3"].push_back("silicon");
+	BasisList["pc-3"].push_back("phosphorus");
+	BasisList["pc-3"].push_back("sulfur");
+	BasisList["pc-3"].push_back("chlorine");
+	BasisList["pc-4-aug"].push_back("hydrogen");
+	BasisList["pc-4-aug"].push_back("carbon");
+	BasisList["pc-4-aug"].push_back("nitrogen");
+	BasisList["pc-4-aug"].push_back("oxygen");
+	BasisList["pc-4-aug"].push_back("fluorine");
+	BasisList["pc-4-aug"].push_back("silicon");
+	BasisList["pc-4-aug"].push_back("phosphorus");
+	BasisList["pc-4-aug"].push_back("sulfur");
+	BasisList["pc-4-aug"].push_back("chlorine");
+	BasisList["pc-4"].push_back("hydrogen");
+	BasisList["pc-4"].push_back("carbon");
+	BasisList["pc-4"].push_back("nitrogen");
+	BasisList["pc-4"].push_back("oxygen");
+	BasisList["pc-4"].push_back("fluorine");
+	BasisList["pc-4"].push_back("silicon");
+	BasisList["pc-4"].push_back("phosphorus");
+	BasisList["pc-4"].push_back("sulfur");
+	BasisList["pc-4"].push_back("chlorine");
+	BasisList["STO-2G"].push_back("hydrogen");
+	BasisList["STO-2G"].push_back("helium");
+	BasisList["STO-2G"].push_back("lithium");
+	BasisList["STO-2G"].push_back("beryllium");
+	BasisList["STO-2G"].push_back("boron");
+	BasisList["STO-2G"].push_back("carbon");
+	BasisList["STO-2G"].push_back("nitrogen");
+	BasisList["STO-2G"].push_back("oxygen");
+	BasisList["STO-2G"].push_back("fluorine");
+	BasisList["STO-2G"].push_back("neon");
+	BasisList["STO-2G"].push_back("sodium");
+	BasisList["STO-2G"].push_back("magnesium");
+	BasisList["STO-2G"].push_back("aluminum");
+	BasisList["STO-2G"].push_back("silicon");
+	BasisList["STO-2G"].push_back("phosphorus");
+	BasisList["STO-2G"].push_back("sulfur");
+	BasisList["STO-2G"].push_back("chlorine");
+	BasisList["STO-2G"].push_back("argon");
+	BasisList["STO-2G"].push_back("potassium");
+	BasisList["STO-2G"].push_back("calcium");
+	BasisList["STO-3G"].push_back("hydrogen");
+	BasisList["STO-3G"].push_back("helium");
+	BasisList["STO-3G"].push_back("lithium");
+	BasisList["STO-3G"].push_back("beryllium");
+	BasisList["STO-3G"].push_back("boron");
+	BasisList["STO-3G"].push_back("carbon");
+	BasisList["STO-3G"].push_back("nitrogen");
+	BasisList["STO-3G"].push_back("oxygen");
+	BasisList["STO-3G"].push_back("fluorine");
+	BasisList["STO-3G"].push_back("neon");
+	BasisList["STO-3G"].push_back("sodium");
+	BasisList["STO-3G"].push_back("magnesium");
+	BasisList["STO-3G"].push_back("aluminum");
+	BasisList["STO-3G"].push_back("silicon");
+	BasisList["STO-3G"].push_back("phosphorus");
+	BasisList["STO-3G"].push_back("sulfur");
+	BasisList["STO-3G"].push_back("chlorine");
+	BasisList["STO-3G"].push_back("argon");
+	BasisList["STO-3G"].push_back("potassium");
+	BasisList["STO-3G"].push_back("calcium");
+	BasisList["STO-3G"].push_back("scandium");
+	BasisList["STO-3G"].push_back("titanium");
+	BasisList["STO-3G"].push_back("vanadium");
+	BasisList["STO-3G"].push_back("chromium");
+	BasisList["STO-3G"].push_back("manganese");
+	BasisList["STO-3G"].push_back("iron");
+	BasisList["STO-3G"].push_back("cobalt");
+	BasisList["STO-3G"].push_back("nickel");
+	BasisList["STO-3G"].push_back("copper");
+	BasisList["STO-3G"].push_back("zinc");
+	BasisList["STO-3G"].push_back("gallium");
+	BasisList["STO-3G"].push_back("germanium");
+	BasisList["STO-3G"].push_back("arsenic");
+	BasisList["STO-3G"].push_back("selenium");
+	BasisList["STO-3G"].push_back("bromine");
+	BasisList["STO-3G"].push_back("krypton");
+	BasisList["STO-3G*"].push_back("hydrogen");
+	BasisList["STO-3G*"].push_back("helium");
+	BasisList["STO-3G*"].push_back("lithium");
+	BasisList["STO-3G*"].push_back("beryllium");
+	BasisList["STO-3G*"].push_back("boron");
+	BasisList["STO-3G*"].push_back("carbon");
+	BasisList["STO-3G*"].push_back("nitrogen");
+	BasisList["STO-3G*"].push_back("oxygen");
+	BasisList["STO-3G*"].push_back("fluorine");
+	BasisList["STO-3G*"].push_back("neon");
+	BasisList["STO-3G*"].push_back("sodium");
+	BasisList["STO-3G*"].push_back("magnesium");
+	BasisList["STO-3G*"].push_back("aluminum");
+	BasisList["STO-3G*"].push_back("silicon");
+	BasisList["STO-3G*"].push_back("phosphorus");
+	BasisList["STO-3G*"].push_back("sulfur");
+	BasisList["STO-3G*"].push_back("chlorine");
+	BasisList["STO-3G*"].push_back("argon");
+	BasisList["STO-6G"].push_back("hydrogen");
+	BasisList["STO-6G"].push_back("helium");
+	BasisList["STO-6G"].push_back("lithium");
+	BasisList["STO-6G"].push_back("beryllium");
+	BasisList["STO-6G"].push_back("boron");
+	BasisList["STO-6G"].push_back("carbon");
+	BasisList["STO-6G"].push_back("nitrogen");
+	BasisList["STO-6G"].push_back("oxygen");
+	BasisList["STO-6G"].push_back("fluorine");
+	BasisList["STO-6G"].push_back("neon");
+	BasisList["STO-6G"].push_back("sodium");
+	BasisList["STO-6G"].push_back("magnesium");
+	BasisList["STO-6G"].push_back("aluminum");
+	BasisList["STO-6G"].push_back("silicon");
+	BasisList["STO-6G"].push_back("phosphorus");
+	BasisList["STO-6G"].push_back("sulfur");
+	BasisList["STO-6G"].push_back("chlorine");
+	BasisList["STO-6G"].push_back("argon");
+	BasisList["STO-6G"].push_back("potassium");
+	BasisList["STO-6G"].push_back("calcium");
+	BasisList["STO-6G"].push_back("scandium");
+	BasisList["STO-6G"].push_back("titanium");
+	BasisList["STO-6G"].push_back("vanadium");
+	BasisList["STO-6G"].push_back("chromium");
+	BasisList["STO-6G"].push_back("manganese");
+	BasisList["STO-6G"].push_back("iron");
+	BasisList["STO-6G"].push_back("cobalt");
+	BasisList["STO-6G"].push_back("nickel");
+	BasisList["STO-6G"].push_back("copper");
+	BasisList["STO-6G"].push_back("zinc");
+	BasisList["STO-6G"].push_back("gallium");
+	BasisList["STO-6G"].push_back("germanium");
+	BasisList["STO-6G"].push_back("arsenic");
+	BasisList["STO-6G"].push_back("selenium");
+	BasisList["STO-6G"].push_back("bromine");
+	BasisList["STO-6G"].push_back("krypton");
+	BasisList["TZ(Dunning)"].push_back("hydrogen");
+	BasisList["TZ(Dunning)"].push_back("lithium");
+	BasisList["TZ(Dunning)"].push_back("beryllium");
+	BasisList["TZ(Dunning)"].push_back("boron");
+	BasisList["TZ(Dunning)"].push_back("carbon");
+	BasisList["TZ(Dunning)"].push_back("nitrogen");
+	BasisList["TZ(Dunning)"].push_back("oxygen");
+	BasisList["TZ(Dunning)"].push_back("fluorine");
+	BasisList["TZ(Dunning)"].push_back("neon");
+}
Index: src/Parser/MpqcParser_Parameters.hpp
===================================================================
--- src/Parser/MpqcParser_Parameters.hpp	(revision 61d69a4cb73f0b86aacc2d6ca57bf28462918da9)
+++ src/Parser/MpqcParser_Parameters.hpp	(revision 61d69a4cb73f0b86aacc2d6ca57bf28462918da9)
@@ -0,0 +1,105 @@
+/*
+ * MpqcParser_Parameters.hpp
+ *
+ *  Created on: Feb 3, 2011
+ *      Author: heber
+ */
+
+#ifndef MPQCPARSER_PARAMETERS_HPP_
+#define MPQCPARSER_PARAMETERS_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <iosfwd>
+#include <list>
+#include <typeinfo>
+#include <vector>
+
+#include "CodePatterns/Log.hpp"
+#include "CodePatterns/Verbose.hpp"
+
+#include <boost/any.hpp>
+
+
+class MpqcParser;
+
+class MpqcParser_Parameters
+{
+  friend class MpqcParser;
+  friend class ParserMpqcUnitTest;
+  friend std::ostream & operator << (std::ostream& ost, const MpqcParser_Parameters &params);
+  friend std::istream & operator >> (std::istream& ist, MpqcParser_Parameters &params);
+public:
+  MpqcParser_Parameters();
+  ~MpqcParser_Parameters();
+
+  enum Theory { CLHF, CLKS, MBPT2, MBPT2_R12, unknownTheory };
+  enum IntegrationMethod { IntegralCints, unknownIntegration };
+
+  enum Parameters {
+    HessianParam,
+    savestateParam,
+    do_gradientParam,
+    maxiterParam,
+    memoryParam,
+    stdapproxParam,
+    nfzcParam,
+    basisParam,
+    aux_basisParam,
+    integrationParam,
+    theoryParam,
+    unknownParam};
+
+  bool checkWorldElementsAgainstCurrentBasis() const;
+  void setHessian(bool _hessian);
+  void setTheory(enum Theory _theory);
+  enum IntegrationMethod getIntegration();
+  enum Theory getTheory();
+
+  std::string getString(enum Parameters _param);
+  int getInt(enum Parameters _param);
+  double getDouble(enum Parameters _param);
+  bool getBool(enum Parameters _param);
+
+  template <class T> bool setter(enum Parameters _param, T _desired) {
+    if (typeid(T) == params[_param].type()) {
+      params[_param] = _desired;
+      return true;
+    } else
+      return false;
+  }
+
+
+private:
+  void initBasis();
+  void initParameters();
+
+  template <class T> void appendParameter(enum Parameters _enum, T _p) {
+    boost::any _p_value = _p;
+    params[_enum] = _p_value;
+  }
+
+  // contains basis and all elements the basis knows about
+  typedef std::map<std::string, std::list<std::string> > BasisMapType;
+  typedef std::map<enum Theory, std::string> TheoryNamesType;
+  typedef std::map<enum IntegrationMethod, std::string> IntegrationNamesType;
+  typedef std::map<enum Parameters, std::string> ParamNamesType;
+
+  typedef std::map<enum Parameters, boost::any> parameterlist;
+
+  // is mutable for boost::any_cast not caring about const.
+  parameterlist params;
+
+  BasisMapType BasisList;
+  TheoryNamesType TheoryNames;
+  IntegrationNamesType IntegrationNames;
+  ParamNamesType ParamNames;
+};
+
+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/unittests/ParserMpqcUnitTest.cpp
===================================================================
--- src/Parser/unittests/ParserMpqcUnitTest.cpp	(revision 9cff8b40dbce0e08a022e7778ac2e12db6f6b9b2)
+++ src/Parser/unittests/ParserMpqcUnitTest.cpp	(revision 61d69a4cb73f0b86aacc2d6ca57bf28462918da9)
@@ -24,5 +24,6 @@
 #include <cppunit/ui/text/TestRunner.h>
 
-#include "Parser/MpqcParser.hpp"
+#include <boost/any.hpp>
+
 #include "World.hpp"
 #include "atom.hpp"
@@ -47,4 +48,5 @@
 \t\tmolecule = $:molecule\n\
 \t\tbasis = $:basis\n\
+\t\tmaxiter = 1000\n\
 \t\tmemory = 16000000\n\
 \t)\n\
@@ -70,4 +72,5 @@
 \t\tmolecule = $:molecule\n\
 \t\tbasis = $:basis\n\
+\t\tmaxiter = 1000\n\
 \t\tmemory = 16000000\n\
 \t)\n\
@@ -92,8 +95,10 @@
 \t\tbasis = $:basis\n\
 \t\tmolecule = $:molecule\n\
+\t\tmemory = 16000000\n\
 \t\treference<CLHF>: (\n\
 \t\t\tmaxiter = 1000\n\
 \t\t\tbasis = $:basis\n\
 \t\t\tmolecule = $:molecule\n\
+\t\t\tmemory = 16000000\n\
 \t\t)\n\
 \t)\n\
@@ -151,4 +156,6 @@
 
 void ParserMpqcUnitTest::setUp() {
+  mpqc = new MpqcParser();
+
   World::getInstance();
 
@@ -161,4 +168,5 @@
 
 void ParserMpqcUnitTest::tearDown() {
+  delete mpqc;
   ChangeTracker::purgeInstance();
   World::purgeInstance();
@@ -167,9 +175,52 @@
 /************************************ tests ***********************************/
 
+void ParserMpqcUnitTest::ParameterTypeTest() {
+  // check types in boost::any map
+  CPPUNIT_ASSERT(mpqc->params.params[MpqcParser_Parameters::HessianParam].type() == typeid(bool));
+  CPPUNIT_ASSERT(mpqc->params.params[MpqcParser_Parameters::HessianParam].type() != typeid(int));
+  CPPUNIT_ASSERT(mpqc->params.params[MpqcParser_Parameters::savestateParam].type() == typeid(bool));
+  CPPUNIT_ASSERT(mpqc->params.params[MpqcParser_Parameters::do_gradientParam].type() == typeid(bool));
+  CPPUNIT_ASSERT(mpqc->params.params[MpqcParser_Parameters::maxiterParam].type() == typeid(int));
+  CPPUNIT_ASSERT(mpqc->params.params[MpqcParser_Parameters::memoryParam].type() == typeid(int));
+  CPPUNIT_ASSERT(mpqc->params.params[MpqcParser_Parameters::stdapproxParam].type() == typeid(std::string));
+  CPPUNIT_ASSERT(mpqc->params.params[MpqcParser_Parameters::nfzcParam].type() == typeid(int));
+  CPPUNIT_ASSERT(mpqc->params.params[MpqcParser_Parameters::basisParam].type() == typeid(std::string));
+  CPPUNIT_ASSERT(mpqc->params.params[MpqcParser_Parameters::aux_basisParam].type() == typeid(std::string));
+  CPPUNIT_ASSERT(mpqc->params.params[MpqcParser_Parameters::integrationParam].type() == typeid(MpqcParser_Parameters::IntegralCints));
+  CPPUNIT_ASSERT(mpqc->params.params[MpqcParser_Parameters::theoryParam].type() == typeid(MpqcParser_Parameters::MBPT2));
+}
+
+void ParserMpqcUnitTest::ParameterDefaultTest() {
+  // check default values
+  CPPUNIT_ASSERT(mpqc->params.getString(MpqcParser_Parameters::HessianParam) == "no");
+  CPPUNIT_ASSERT(!mpqc->params.getBool(MpqcParser_Parameters::HessianParam));
+  CPPUNIT_ASSERT(mpqc->params.getString(MpqcParser_Parameters::savestateParam) == "no");
+  CPPUNIT_ASSERT(!mpqc->params.getBool(MpqcParser_Parameters::savestateParam));
+  CPPUNIT_ASSERT(mpqc->params.getString(MpqcParser_Parameters::do_gradientParam) == "yes");
+  CPPUNIT_ASSERT(mpqc->params.getBool(MpqcParser_Parameters::do_gradientParam));
+  CPPUNIT_ASSERT(mpqc->params.getInt(MpqcParser_Parameters::maxiterParam) == 1000);
+  CPPUNIT_ASSERT(mpqc->params.getInt(MpqcParser_Parameters::memoryParam) == 16000000);
+  CPPUNIT_ASSERT(mpqc->params.getString(MpqcParser_Parameters::stdapproxParam) == "A'");
+  CPPUNIT_ASSERT(mpqc->params.getInt(MpqcParser_Parameters::nfzcParam) == 1);
+  CPPUNIT_ASSERT(mpqc->params.getString(MpqcParser_Parameters::basisParam) == "3-21G");
+  CPPUNIT_ASSERT(mpqc->params.getString(MpqcParser_Parameters::aux_basisParam) == "aug-cc-pVDZ");
+  CPPUNIT_ASSERT(mpqc->params.getString(MpqcParser_Parameters::integrationParam) == "IntegralCints");
+  CPPUNIT_ASSERT(mpqc->params.getString(MpqcParser_Parameters::theoryParam) == "MBPT2");
+  CPPUNIT_ASSERT(mpqc->params.getTheory() == MpqcParser_Parameters::MBPT2);
+  CPPUNIT_ASSERT(mpqc->params.getIntegration() == MpqcParser_Parameters::IntegralCints);
+
+  // check that values are not removed
+  CPPUNIT_ASSERT(!mpqc->params.params[MpqcParser_Parameters::theoryParam].empty());
+
+  // check throw, for the moment aren't, are caught in getInt()
+  //CPPUNIT_ASSERT_THROW(mpqc->params.getInt(MpqcParser_Parameters::integrationParam), boost::bad_any_cast);
+  //CPPUNIT_ASSERT_THROW(mpqc->params.getInt(MpqcParser_Parameters::theoryParam), boost::bad_any_cast);
+
+}
+
 void ParserMpqcUnitTest::readMpqcTest() {
   stringstream input(waterMpqc_CLHF);
-  MpqcParser* testParser = new MpqcParser();
-  testParser->setTheory(MpqcParser::CLHF);
-  testParser->load(&input);
+  mpqc->params.setTheory(MpqcParser_Parameters::CLHF);
+  mpqc->load(&input);
 
   CPPUNIT_ASSERT_EQUAL(3, World::getInstance().numAtoms());
@@ -194,11 +245,10 @@
   // create two stringstreams, one stored, one created
 
-  MpqcParser* testParser = new MpqcParser();
   std::vector<atom *> atoms = World::getInstance().getAllAtoms();
   {
     // compare both configs for CLHF
     stringstream output;
-    testParser->setTheory(MpqcParser::CLHF);
-    testParser->save(&output, atoms);
+    mpqc->params.setTheory(MpqcParser_Parameters::CLHF);
+    mpqc->save(&output, atoms);
     stringstream input(waterMpqc_CLHF);
     for (; std::getline(input, first) && std::getline(output, second); ) {
@@ -210,6 +260,6 @@
     // compare both configs for CLKS
     stringstream output;
-    testParser->setTheory(MpqcParser::CLKS);
-    testParser->save(&output, atoms);
+    mpqc->params.setTheory(MpqcParser_Parameters::CLKS);
+    mpqc->save(&output, atoms);
     stringstream input(waterMpqc_CLKS);
     for (; std::getline(input, first) && std::getline(output, second); ) {
@@ -221,6 +271,6 @@
     // compare both configs for MBPT2
     stringstream output;
-    testParser->setTheory(MpqcParser::MBPT2);
-    testParser->save(&output, atoms);
+    mpqc->params.setTheory(MpqcParser_Parameters::MBPT2);
+    mpqc->save(&output, atoms);
     stringstream input(waterMpqc_MBPT2);
     for (; std::getline(input, first) && std::getline(output, second); ) {
@@ -232,6 +282,6 @@
     // compare both configs for MBPT2_R12
     stringstream output;
-    testParser->setTheory(MpqcParser::MBPT2_R12);
-    testParser->save(&output, atoms);
+    mpqc->params.setTheory(MpqcParser_Parameters::MBPT2_R12);
+    mpqc->save(&output, atoms);
     stringstream input(waterMpqc_MBPT2_R12);
     for (; std::getline(input, first) && std::getline(output, second); ) {
Index: src/Parser/unittests/ParserMpqcUnitTest.hpp
===================================================================
--- src/Parser/unittests/ParserMpqcUnitTest.hpp	(revision 9cff8b40dbce0e08a022e7778ac2e12db6f6b9b2)
+++ src/Parser/unittests/ParserMpqcUnitTest.hpp	(revision 61d69a4cb73f0b86aacc2d6ca57bf28462918da9)
@@ -13,4 +13,5 @@
 #endif
 
+#include "Parser/MpqcParser.hpp"
 
 #include <cppunit/extensions/HelperMacros.h>
@@ -20,6 +21,8 @@
 {
   CPPUNIT_TEST_SUITE( ParserMpqcUnitTest ) ;
+  CPPUNIT_TEST ( ParameterTypeTest );
+  CPPUNIT_TEST ( ParameterDefaultTest );
+  CPPUNIT_TEST ( readMpqcTest );
   CPPUNIT_TEST ( writeMpqcTest );
-  CPPUNIT_TEST ( readMpqcTest );
   CPPUNIT_TEST_SUITE_END();
 
@@ -28,6 +31,11 @@
   void tearDown();
 
+  void ParameterTypeTest();
+  void ParameterDefaultTest();
   void readMpqcTest();
   void writeMpqcTest();
+
+private:
+  MpqcParser *mpqc;
 };
 
Index: tests/regression/Atoms/Add/post/test.in
===================================================================
--- tests/regression/Atoms/Add/post/test.in	(revision 9cff8b40dbce0e08a022e7778ac2e12db6f6b9b2)
+++ tests/regression/Atoms/Add/post/test.in	(revision 61d69a4cb73f0b86aacc2d6ca57bf28462918da9)
@@ -6,8 +6,10 @@
 		basis = $:basis
 		molecule = $:molecule
+		memory = 16000000
 		reference<CLHF>: (
 			maxiter = 1000
 			basis = $:basis
 			molecule = $:molecule
+			memory = 16000000
 		)
 	)
Index: tests/regression/Atoms/Remove/post/test.in
===================================================================
--- tests/regression/Atoms/Remove/post/test.in	(revision 9cff8b40dbce0e08a022e7778ac2e12db6f6b9b2)
+++ tests/regression/Atoms/Remove/post/test.in	(revision 61d69a4cb73f0b86aacc2d6ca57bf28462918da9)
@@ -6,8 +6,10 @@
 		basis = $:basis
 		molecule = $:molecule
+		memory = 16000000
 		reference<CLHF>: (
 			maxiter = 1000
 			basis = $:basis
 			molecule = $:molecule
+			memory = 16000000
 		)
 	)
Index: tests/regression/Parser/Mpqc/post/test.in
===================================================================
--- tests/regression/Parser/Mpqc/post/test.in	(revision 9cff8b40dbce0e08a022e7778ac2e12db6f6b9b2)
+++ tests/regression/Parser/Mpqc/post/test.in	(revision 61d69a4cb73f0b86aacc2d6ca57bf28462918da9)
@@ -6,8 +6,10 @@
 		basis = $:basis
 		molecule = $:molecule
+		memory = 16000000
 		reference<CLHF>: (
 			maxiter = 1000
 			basis = $:basis
 			molecule = $:molecule
+			memory = 16000000
 		)
 	)
