Index: src/Actions/AtomAction/ChangeElementAction.cpp
===================================================================
--- src/Actions/AtomAction/ChangeElementAction.cpp	(revision fa0b18007c6019da11597450d8db648ae786ee6d)
+++ src/Actions/AtomAction/ChangeElementAction.cpp	(revision be97a841b19bbe05e88f3d3ac69c9cb5cd562f10)
@@ -38,6 +38,6 @@
   std::vector<element *> elements;
 
-  dialog->queryAtom(NAME, &first, MapOfActions::getInstance().getDescription(NAME));
-  dialog->queryElement("element", &elements, MapOfActions::getInstance().getDescription("element"));
+  dialog->queryElement(NAME, &elements, MapOfActions::getInstance().getDescription(NAME));
+  dialog->queryAtom("atom-by-id", &first, MapOfActions::getInstance().getDescription("atom-by-id"));
 
   if(dialog->display()) {
Index: src/Actions/MapOfActions.cpp
===================================================================
--- src/Actions/MapOfActions.cpp	(revision fa0b18007c6019da11597450d8db648ae786ee6d)
+++ src/Actions/MapOfActions.cpp	(revision be97a841b19bbe05e88f3d3ac69c9cb5cd562f10)
@@ -272,5 +272,5 @@
   TypeMap["center-in-box"] = Box;
   TypeMap["change-box"] = Box;
-  TypeMap["change-element"] = Atom;
+  TypeMap["change-element"] = Element;
   TypeMap["change-molname"] = String;
   TypeMap["convex-envelope"] = Molecule;
@@ -323,5 +323,5 @@
   TypeMap["MaxDistance"] = Double;
   TypeMap["molecule-by-id"] = Molecule;
-  TypeMap["molecule-by-name"] = Molecule;
+  TypeMap["molecule-by-name"] = String;
   TypeMap["nonconvex-file"] = String;
   TypeMap["order"] = Integer;
Index: src/Actions/ParserAction/LoadXyzAction.cpp
===================================================================
--- src/Actions/ParserAction/LoadXyzAction.cpp	(revision fa0b18007c6019da11597450d8db648ae786ee6d)
+++ src/Actions/ParserAction/LoadXyzAction.cpp	(revision be97a841b19bbe05e88f3d3ac69c9cb5cd562f10)
@@ -78,11 +78,6 @@
         if (UniqueList.size() != ListAfter.size()) { // only create if new atoms have been parsed
           MoleculeListClass *molecules = World::getInstance().getMolecules();
-          molecule *mol= NULL;
-          if (molecules->ListOfMolecules.empty()) {
-            mol = World::getInstance().createMolecule();
-            molecules->insert(mol);
-          } else {
-            mol = *(molecules->ListOfMolecules.begin());
-          }
+          molecule *mol = World::getInstance().createMolecule();
+          molecules->insert(mol);
           for (vector<atom *>::iterator runner = ListAfter.begin(); runner != ListAfter.end(); ++runner) {
             Inserter = UniqueList.insert(*runner);
Index: src/Actions/WorldAction/ChangeBoxAction.cpp
===================================================================
--- src/Actions/WorldAction/ChangeBoxAction.cpp	(revision fa0b18007c6019da11597450d8db648ae786ee6d)
+++ src/Actions/WorldAction/ChangeBoxAction.cpp	(revision be97a841b19bbe05e88f3d3ac69c9cb5cd562f10)
@@ -41,4 +41,5 @@
   if(dialog->display()) {
     DoLog(0) && (Log() << Verbose(0) << "Setting box domain to " << cell_size.getM() << endl);
+    World::getInstance().setDomain(cell_size.getM());
     delete dialog;
     return Action::success;
Index: src/Actions/WorldAction/InputAction.cpp
===================================================================
--- src/Actions/WorldAction/InputAction.cpp	(revision fa0b18007c6019da11597450d8db648ae786ee6d)
+++ src/Actions/WorldAction/InputAction.cpp	(revision be97a841b19bbe05e88f3d3ac69c9cb5cd562f10)
@@ -38,5 +38,5 @@
   MoleculeListClass *molecules = World::getInstance().getMolecules();
   molecule *mol = NULL;
-  string filename;
+  std::string filename;
   std::ifstream test;
 
@@ -45,29 +45,34 @@
   if(dialog->display()) {
     DoLog(0) && (Log() << Verbose(0) << "Config file given." << endl);
-    std::string FilenamePrefix = filename.substr(0,filename.find('.'));
-    FormatParserStorage::getInstance().SetOutputPrefixForAll(FilenamePrefix);
-    DoLog(1) && (Log() << Verbose(1) << "Setting config file name prefix to " << FilenamePrefix << "." << endl);
-    test.open(filename.c_str());
-    if (test == NULL) {
-      DoLog(1) && (Log() << Verbose(1) << "Specified config file " << filename << " not found." << endl);
+    if (filename.find('.') != string::npos) {
+      std::string FilenamePrefix = filename.substr(0,filename.find_last_of('.'));
+      std::string FilenameSuffix = filename.substr(filename.find_last_of('.')+1, filename.length());
+      DoLog(1) && (Log() << Verbose(1) << "Setting config file name prefix to " << FilenamePrefix << "." << endl);
+      test.open(filename.c_str());
+      if (test == NULL) {
+        DoLog(1) && (Log() << Verbose(1) << "Specified config file " << filename << " not found." << endl);
+      } else {
+        DoLog(1) && (Log() << Verbose(1) << "Specified config file found, parsing ... ");
+        FormatParserStorage::getInstance().get((std::istream &)test, FilenameSuffix);
+        test.close();
+      }
+      FormatParserStorage::getInstance().SetOutputPrefixForAll(FilenamePrefix);
+      // set mol to first active molecule
+      if (molecules->ListOfMolecules.size() != 0) {
+        for (MoleculeList::iterator ListRunner = molecules->ListOfMolecules.begin(); ListRunner != molecules->ListOfMolecules.end(); ListRunner++)
+          if ((*ListRunner)->ActiveFlag) {
+            mol = *ListRunner;
+            break;
+          }
+      }
+      if (mol == NULL) {
+        mol = World::getInstance().createMolecule();
+        mol->ActiveFlag = true;
+        molecules->insert(mol);
+      }
+      mol->SetNameFromFilename(filename.substr(0,filename.find('.')).c_str());
     } else {
-      DoLog(1) && (Log() << Verbose(1) << "Specified config file found, parsing ... ");
-      FormatParserStorage::getInstance().getPcp().load(&test);
-      test.close();
+      DoeLog(1) && (eLog() << Verbose(1) << "Input file does not have a suffix, cannot recognize format." << endl);
     }
-    // set mol to first active molecule
-    if (molecules->ListOfMolecules.size() != 0) {
-      for (MoleculeList::iterator ListRunner = molecules->ListOfMolecules.begin(); ListRunner != molecules->ListOfMolecules.end(); ListRunner++)
-        if ((*ListRunner)->ActiveFlag) {
-          mol = *ListRunner;
-          break;
-        }
-    }
-    if (mol == NULL) {
-      mol = World::getInstance().createMolecule();
-      mol->ActiveFlag = true;
-      molecules->insert(mol);
-    }
-    mol->SetNameFromFilename(filename.c_str());
     delete dialog;
     return Action::success;
