Index: src/Actions/WorldAction/InputAction.cpp
===================================================================
--- src/Actions/WorldAction/InputAction.cpp	(revision 4f7f34ebe3887720f1827172d2ebad1e1c5ca8aa)
+++ src/Actions/WorldAction/InputAction.cpp	(revision 4f7f34ebe3887720f1827172d2ebad1e1c5ca8aa)
@@ -0,0 +1,104 @@
+/*
+ * InputAction.cpp
+ *
+ *  Created on: May 8, 2010
+ *      Author: heber
+ */
+
+#include "Helpers/MemDebug.hpp"
+
+#include "Actions/WorldAction/InputAction.hpp"
+#include "log.hpp"
+#include "molecule.hpp"
+#include "Parser/FormatParserStorage.hpp"
+#include "Parser/PcpParser.hpp"
+#include "verbose.hpp"
+#include "World.hpp"
+
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+#include "UIElements/UIFactory.hpp"
+#include "UIElements/Dialog.hpp"
+#include "Actions/MapOfActions.hpp"
+
+const char WorldInputAction::NAME[] = "input";
+
+WorldInputAction::WorldInputAction() :
+  Action(NAME)
+{}
+
+WorldInputAction::~WorldInputAction()
+{}
+
+Action::state_ptr WorldInputAction::performCall() {
+  Dialog *dialog = UIFactory::getInstance().makeDialog();
+  MoleculeListClass *molecules = World::getInstance().getMolecules();
+  molecule *mol = NULL;
+  string filename;
+  std::ifstream test;
+
+  dialog->queryString(NAME, &filename, MapOfActions::getInstance().getDescription(NAME));
+
+  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);
+    } else {
+      DoLog(1) && (Log() << Verbose(1) << "Specified config file found, parsing ... ");
+      FormatParserStorage::getInstance().getPcp().load(&test);
+      test.close();
+    }
+    // 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;
+  } else {
+    delete dialog;
+    return Action::failure;
+  }
+}
+
+Action::state_ptr WorldInputAction::performUndo(Action::state_ptr _state) {
+//  ParserLoadXyzState *state = assert_cast<ParserLoadXyzState*>(_state.get());
+
+  return Action::failure;
+//  string newName = state->mol->getName();
+//  state->mol->setName(state->lastName);
+//
+//  return Action::state_ptr(new ParserLoadXyzState(state->mol,newName));
+}
+
+Action::state_ptr WorldInputAction::performRedo(Action::state_ptr _state){
+  return Action::failure;
+}
+
+bool WorldInputAction::canUndo() {
+  return false;
+}
+
+bool WorldInputAction::shouldUndo() {
+  return false;
+}
+
+const string WorldInputAction::getName() {
+  return NAME;
+}
Index: src/Actions/WorldAction/InputAction.hpp
===================================================================
--- src/Actions/WorldAction/InputAction.hpp	(revision 4f7f34ebe3887720f1827172d2ebad1e1c5ca8aa)
+++ src/Actions/WorldAction/InputAction.hpp	(revision 4f7f34ebe3887720f1827172d2ebad1e1c5ca8aa)
@@ -0,0 +1,30 @@
+/*
+ * InputAction.hpp
+ *
+ *  Created on: May 8, 2010
+ *      Author: heber
+ */
+
+#ifndef INPUTACTION_HPP_
+#define INPUTACTION_HPP_
+
+#include "Actions/Action.hpp"
+
+class WorldInputAction : public Action {
+public:
+  WorldInputAction();
+  virtual ~WorldInputAction();
+
+  bool canUndo();
+  bool shouldUndo();
+
+  virtual const std::string getName();
+private:
+  virtual Action::state_ptr performCall();
+  virtual Action::state_ptr performUndo(Action::state_ptr);
+  virtual Action::state_ptr performRedo(Action::state_ptr);
+
+  static const char NAME[];
+};
+
+#endif /* INPUTACTION_HPP_ */
Index: src/Actions/WorldAction/OutputAction.cpp
===================================================================
--- src/Actions/WorldAction/OutputAction.cpp	(revision 4f7f34ebe3887720f1827172d2ebad1e1c5ca8aa)
+++ src/Actions/WorldAction/OutputAction.cpp	(revision 4f7f34ebe3887720f1827172d2ebad1e1c5ca8aa)
@@ -0,0 +1,75 @@
+/*
+ * OutputAction.cpp
+ *
+ *  Created on: May 8, 2010
+ *      Author: heber
+ */
+
+#include "Helpers/MemDebug.hpp"
+
+#include "Actions/WorldAction/OutputAction.hpp"
+#include "log.hpp"
+#include "verbose.hpp"
+#include "World.hpp"
+
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+#include "UIElements/UIFactory.hpp"
+#include "UIElements/Dialog.hpp"
+#include "Actions/MapOfActions.hpp"
+
+const char WorldOutputAction::NAME[] = "output";
+
+WorldOutputAction::WorldOutputAction() :
+  Action(NAME)
+{}
+
+WorldOutputAction::~WorldOutputAction()
+{}
+
+Action::state_ptr WorldOutputAction::performCall() {
+  Dialog *dialog = UIFactory::getInstance().makeDialog();
+  string defaultname;
+
+  defaultname = World::getInstance().getDefaultName();
+  dialog->queryString(NAME, &defaultname, MapOfActions::getInstance().getDescription(NAME));
+
+  if(dialog->display()) {
+    World::getInstance().setDefaultName(defaultname);
+    DoLog(0) && (Log() << Verbose(0) << "Default name of new molecules set to " << World::getInstance().getDefaultName() << "." << endl);
+    delete dialog;
+    return Action::success;
+  } else {
+    delete dialog;
+    return Action::failure;
+  }
+}
+
+Action::state_ptr WorldOutputAction::performUndo(Action::state_ptr _state) {
+//  ParserLoadXyzState *state = assert_cast<ParserLoadXyzState*>(_state.get());
+
+  return Action::failure;
+//  string newName = state->mol->getName();
+//  state->mol->setName(state->lastName);
+//
+//  return Action::state_ptr(new ParserLoadXyzState(state->mol,newName));
+}
+
+Action::state_ptr WorldOutputAction::performRedo(Action::state_ptr _state){
+  return Action::failure;
+}
+
+bool WorldOutputAction::canUndo() {
+  return false;
+}
+
+bool WorldOutputAction::shouldUndo() {
+  return false;
+}
+
+const string WorldOutputAction::getName() {
+  return NAME;
+}
Index: src/Actions/WorldAction/OutputAction.hpp
===================================================================
--- src/Actions/WorldAction/OutputAction.hpp	(revision 4f7f34ebe3887720f1827172d2ebad1e1c5ca8aa)
+++ src/Actions/WorldAction/OutputAction.hpp	(revision 4f7f34ebe3887720f1827172d2ebad1e1c5ca8aa)
@@ -0,0 +1,30 @@
+/*
+ * OutputAction.hpp
+ *
+ *  Created on: May 8, 2010
+ *      Author: heber
+ */
+
+#ifndef OUTPUTACTION_HPP_
+#define OUTPUTACTION_HPP_
+
+#include "Actions/Action.hpp"
+
+class WorldOutputAction : public Action {
+public:
+  WorldOutputAction();
+  virtual ~WorldOutputAction();
+
+  bool canUndo();
+  bool shouldUndo();
+
+  virtual const std::string getName();
+private:
+  virtual Action::state_ptr performCall();
+  virtual Action::state_ptr performUndo(Action::state_ptr);
+  virtual Action::state_ptr performRedo(Action::state_ptr);
+
+  static const char NAME[];
+};
+
+#endif /* OUTPUTACTION_HPP_ */
