Index: molecuilder/src/Actions/MoleculeAction/ChangeNameAction.cpp
===================================================================
--- molecuilder/src/Actions/MoleculeAction/ChangeNameAction.cpp	(revision 7ac7659ca67f39e4a2fdac6063ed1783408d9cab)
+++ molecuilder/src/Actions/MoleculeAction/ChangeNameAction.cpp	(revision 7ac7659ca67f39e4a2fdac6063ed1783408d9cab)
@@ -0,0 +1,87 @@
+/*
+ * ChangeNameAction.cpp
+ *
+ *  Created on: Jan 15, 2010
+ *      Author: crueger
+ */
+
+#include "Actions/MoleculeAction/ChangeNameAction.hpp"
+
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+#include "UIElements/UIFactory.hpp"
+#include "UIElements/Dialog.hpp"
+
+#include "atom.hpp"
+#include "molecule.hpp"
+
+/****** MoleculeChangeNameAction *****/
+
+// memento to remember the state when undoing
+
+class MoleculeChangeNameState : public ActionState {
+public:
+  MoleculeChangeNameState(molecule* _mol,std::string _lastName) :
+    mol(_mol),
+    lastName(_lastName)
+  {}
+  molecule* mol;
+  std::string lastName;
+};
+
+const char MoleculeChangeNameAction::NAME[] = "Change filename of Molecule";
+
+MoleculeChangeNameAction::MoleculeChangeNameAction(MoleculeListClass *_molecules) :
+  Action(NAME),
+  molecules(_molecules)
+{}
+
+MoleculeChangeNameAction::~MoleculeChangeNameAction()
+{}
+
+Action::state_ptr MoleculeChangeNameAction::performCall() {
+  string filename;
+  molecule *mol = NULL;
+  Dialog *dialog = UIFactory::getInstance().makeDialog();
+
+  dialog->queryMolecule("Enter index of molecule: ",&mol,molecules);
+  dialog->queryString("Enter name: ",&filename);
+
+  if(dialog->display()) {
+    string oldName = mol->getName();
+    mol->setName(filename);
+    delete dialog;
+    return Action::state_ptr(new MoleculeChangeNameState(mol,oldName));
+  }
+  delete dialog;
+  return Action::failure;
+}
+
+Action::state_ptr MoleculeChangeNameAction::performUndo(Action::state_ptr _state) {
+  MoleculeChangeNameState *state = assert_cast<MoleculeChangeNameState*>(_state.get());
+
+  string newName = state->mol->getName();
+  state->mol->setName(state->lastName);
+
+  return Action::state_ptr(new MoleculeChangeNameState(state->mol,newName));
+}
+
+Action::state_ptr MoleculeChangeNameAction::performRedo(Action::state_ptr _state){
+  // Undo and redo have to do the same for this action
+  return performUndo(_state);
+}
+
+bool MoleculeChangeNameAction::canUndo() {
+  return true;
+}
+
+bool MoleculeChangeNameAction::shouldUndo() {
+  return true;
+}
+
+const string MoleculeChangeNameAction::getName() {
+  return NAME;
+}
Index: molecuilder/src/Actions/MoleculeAction/ChangeNameAction.hpp
===================================================================
--- molecuilder/src/Actions/MoleculeAction/ChangeNameAction.hpp	(revision 7ac7659ca67f39e4a2fdac6063ed1783408d9cab)
+++ molecuilder/src/Actions/MoleculeAction/ChangeNameAction.hpp	(revision 7ac7659ca67f39e4a2fdac6063ed1783408d9cab)
@@ -0,0 +1,35 @@
+/*
+ * ChangeNameAction.hpp
+ *
+ *  Created on: Jan 15, 2010
+ *      Author: crueger
+ */
+
+#ifndef CHANGENAMEACTION_HPP
+#define CHANGENAMEACTION_HPP
+
+#include "Actions/Action.hpp"
+#include "Actions/Process.hpp"
+
+class MoleculeListClass;
+
+class MoleculeChangeNameAction : public Action {
+public:
+  MoleculeChangeNameAction(MoleculeListClass*);
+  virtual ~MoleculeChangeNameAction();
+
+  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);
+
+  MoleculeListClass *molecules;
+  static const char NAME[];
+};
+
+
+#endif // CHANGENAMEACTION_HPP
Index: molecuilder/src/Actions/ParserAction/LoadXyzAction.cpp
===================================================================
--- molecuilder/src/Actions/ParserAction/LoadXyzAction.cpp	(revision 7ac7659ca67f39e4a2fdac6063ed1783408d9cab)
+++ molecuilder/src/Actions/ParserAction/LoadXyzAction.cpp	(revision 7ac7659ca67f39e4a2fdac6063ed1783408d9cab)
@@ -0,0 +1,88 @@
+/*
+ * LoadXyzAction.cpp
+ *
+ *  Created on: May 8, 2010
+ *      Author: heber
+ */
+
+#include "Actions/ParserAction/LoadXyzAction.hpp"
+#include "Parser/XyzParser.hpp"
+
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+#include "UIElements/UIFactory.hpp"
+#include "UIElements/Dialog.hpp"
+
+#include "atom.hpp"
+#include "molecule.hpp"
+
+/****** ParserLoadXyzAction *****/
+
+//// memento to remember the state when undoing
+//
+//class ParserLoadXyzState : public ActionState {
+//public:
+//  ParserLoadXyzState(molecule* _mol,std::string _lastName) :
+//    mol(_mol),
+//    lastName(_lastName)
+//  {}
+//  molecule* mol;
+//  std::string lastName;
+//};
+
+const char ParserLoadXyzAction::NAME[] = "Load a xyz file into the World";
+
+ParserLoadXyzAction::ParserLoadXyzAction() :
+  Action(NAME)
+{}
+
+ParserLoadXyzAction::~ParserLoadXyzAction()
+{}
+
+Action::state_ptr ParserLoadXyzAction::performCall() {
+  string filename;
+  XyzParser parser;
+  Dialog *dialog = UIFactory::getInstance().makeDialog();
+
+  dialog->queryString("filename",&filename, "Filename of the xyz file");
+
+  if(dialog->display()) {
+    // parse xyz file
+    ifstream input;
+    input.open(filename.c_str());
+    if (!input.fail())
+      parser.load(&input);
+    input.close();
+  }
+  delete dialog;
+  return Action::failure;
+}
+
+//Action::state_ptr ParserLoadXyzAction::performUndo(Action::state_ptr _state) {
+//  ParserLoadXyzState *state = assert_cast<ParserLoadXyzState*>(_state.get());
+//
+//  string newName = state->mol->getName();
+//  state->mol->setName(state->lastName);
+//
+//  return Action::state_ptr(new ParserLoadXyzState(state->mol,newName));
+//}
+//
+//Action::state_ptr ParserLoadXyzAction::performRedo(Action::state_ptr _state){
+//  // Undo and redo have to do the same for this action
+//  return performUndo(_state);
+//}
+
+bool ParserLoadXyzAction::canUndo() {
+  return false;
+}
+
+bool ParserLoadXyzAction::shouldUndo() {
+  return false;
+}
+
+const string ParserLoadXyzAction::getName() {
+  return NAME;
+}
Index: molecuilder/src/Actions/ParserAction/LoadXyzAction.hpp
===================================================================
--- molecuilder/src/Actions/ParserAction/LoadXyzAction.hpp	(revision 7ac7659ca67f39e4a2fdac6063ed1783408d9cab)
+++ molecuilder/src/Actions/ParserAction/LoadXyzAction.hpp	(revision 7ac7659ca67f39e4a2fdac6063ed1783408d9cab)
@@ -0,0 +1,31 @@
+/*
+ * LoadXyzAction.hpp
+ *
+ *  Created on: May 8, 2010
+ *      Author: heber
+ */
+
+#ifndef LOADXYZACTION_HPP_
+#define LOADXYZACTION_HPP_
+
+#include "Actions/Action.hpp"
+#include "Actions/Process.hpp"
+
+class ParserLoadXyzAction : public Action {
+public:
+  ParserLoadXyzAction();
+  virtual ~ParserLoadXyzAction();
+
+  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 /* LOADXYZACTION_HPP_ */
Index: molecuilder/src/Actions/ParserAction/SaveXyzAction.cpp
===================================================================
--- molecuilder/src/Actions/ParserAction/SaveXyzAction.cpp	(revision 7ac7659ca67f39e4a2fdac6063ed1783408d9cab)
+++ molecuilder/src/Actions/ParserAction/SaveXyzAction.cpp	(revision 7ac7659ca67f39e4a2fdac6063ed1783408d9cab)
@@ -0,0 +1,88 @@
+/*
+ * SaveXyzAction.cpp
+ *
+ *  Created on: May 8, 2010
+ *      Author: heber
+ */
+
+#include "Actions/ParserAction/SaveXyzAction.hpp"
+#include "Parser/XyzParser.hpp"
+
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+#include "UIElements/UIFactory.hpp"
+#include "UIElements/Dialog.hpp"
+
+#include "atom.hpp"
+#include "molecule.hpp"
+
+/****** ParserSaveXyzAction *****/
+
+//// memento to remember the state when undoing
+//
+//class ParserSaveXyzState : public ActionState {
+//public:
+//  ParserSaveXyzState(molecule* _mol,std::string _lastName) :
+//    mol(_mol),
+//    lastName(_lastName)
+//  {}
+//  molecule* mol;
+//  std::string lastName;
+//};
+
+const char ParserSaveXyzAction::NAME[] = "Save a xyz snapshot of the World";
+
+ParserSaveXyzAction::ParserSaveXyzAction() :
+  Action(NAME)
+{}
+
+ParserSaveXyzAction::~ParserSaveXyzAction()
+{}
+
+Action::state_ptr ParserSaveXyzAction::performCall() {
+  string filename;
+  XyzParser parser;
+  Dialog *dialog = UIFactory::getInstance().makeDialog();
+
+  dialog->queryString("filename",&filename, "Filename of the xyz file");
+
+  if(dialog->display()) {
+    // store xyz file
+    ofstream output;
+    output.open(filename.c_str());
+    if (!output.fail())
+      parser.save(&output);
+    output.close();
+  }
+  delete dialog;
+  return Action::failure;
+}
+
+//Action::state_ptr ParserSaveXyzAction::performUndo(Action::state_ptr _state) {
+//  ParserSaveXyzState *state = assert_cast<ParserSaveXyzState*>(_state.get());
+//
+//  string newName = state->mol->getName();
+//  state->mol->setName(state->lastName);
+//
+//  return Action::state_ptr(new ParserSaveXyzState(state->mol,newName));
+//}
+//
+//Action::state_ptr ParserSaveXyzAction::performRedo(Action::state_ptr _state){
+//  // Undo and redo have to do the same for this action
+//  return performUndo(_state);
+//}
+
+bool ParserSaveXyzAction::canUndo() {
+  return false;
+}
+
+bool ParserSaveXyzAction::shouldUndo() {
+  return false;
+}
+
+const string ParserSaveXyzAction::getName() {
+  return NAME;
+}
Index: molecuilder/src/Actions/ParserAction/SaveXyzAction.hpp
===================================================================
--- molecuilder/src/Actions/ParserAction/SaveXyzAction.hpp	(revision 7ac7659ca67f39e4a2fdac6063ed1783408d9cab)
+++ molecuilder/src/Actions/ParserAction/SaveXyzAction.hpp	(revision 7ac7659ca67f39e4a2fdac6063ed1783408d9cab)
@@ -0,0 +1,31 @@
+/*
+ * SaveXyzAction.hpp
+ *
+ *  Created on: May 8, 2010
+ *      Author: heber
+ */
+
+#ifndef SAVEXYZACTION_HPP_
+#define SAVEXYZACTION_HPP_
+
+#include "Actions/Action.hpp"
+#include "Actions/Process.hpp"
+
+class ParserSaveXyzAction : public Action {
+public:
+  ParserSaveXyzAction();
+  virtual ~ParserSaveXyzAction();
+
+  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 /* SAVEXYZACTION_HPP_ */
Index: molecuilder/src/Actions/small_actions.cpp
===================================================================
--- molecuilder/src/Actions/small_actions.cpp	(revision 83afe0ca41bd8e0cc0befc39a4de3bddf06af5cd)
+++ 	(revision )
@@ -1,80 +1,0 @@
-#include "Actions/small_actions.hpp"
-
-#include <iostream>
-#include <string>
-
-using namespace std;
-
-#include "UIElements/UIFactory.hpp"
-#include "UIElements/Dialog.hpp"
-
-#include "atom.hpp"
-#include "molecule.hpp"
-
-/****** ChangeMoleculeNameAction *****/
-
-// memento to remember the state when undoing
-
-class ChangeMoleculeNameState : public ActionState {
-public:
-  ChangeMoleculeNameState(molecule* _mol,std::string _lastName) :
-    mol(_mol),
-    lastName(_lastName)
-  {}
-  molecule* mol;
-  std::string lastName;
-};
-
-const char ChangeMoleculeNameAction::NAME[] = "Change filename of Molecule";
-
-ChangeMoleculeNameAction::ChangeMoleculeNameAction(MoleculeListClass *_molecules) :
-  Action(NAME),
-  molecules(_molecules)
-{}
-
-ChangeMoleculeNameAction::~ChangeMoleculeNameAction()
-{}
-
-Action::state_ptr ChangeMoleculeNameAction::performCall() {
-  string filename;
-  molecule *mol = NULL;
-  Dialog *dialog = UIFactory::getInstance().makeDialog();
-
-  dialog->queryMolecule("Enter index of molecule: ",&mol,molecules);
-  dialog->queryString("Enter name: ",&filename);
-
-  if(dialog->display()) {
-    string oldName = mol->getName();
-    mol->setName(filename);
-    delete dialog;
-    return Action::state_ptr(new ChangeMoleculeNameState(mol,oldName));
-  }
-  delete dialog;
-  return Action::failure;
-}
-
-Action::state_ptr ChangeMoleculeNameAction::performUndo(Action::state_ptr _state) {
-  ChangeMoleculeNameState *state = assert_cast<ChangeMoleculeNameState*>(_state.get());
-
-  string newName = state->mol->getName();
-  state->mol->setName(state->lastName);
-
-  return Action::state_ptr(new ChangeMoleculeNameState(state->mol,newName));
-}
-
-Action::state_ptr ChangeMoleculeNameAction::performRedo(Action::state_ptr _state){
-  // Undo and redo have to do the same for this action
-  return performUndo(_state);
-}
-
-bool ChangeMoleculeNameAction::canUndo() {
-  return true;
-}
-
-bool ChangeMoleculeNameAction::shouldUndo() {
-  return true;
-}
-
-const string ChangeMoleculeNameAction::getName() {
-  return NAME;
-}
Index: molecuilder/src/Actions/small_actions.hpp
===================================================================
--- molecuilder/src/Actions/small_actions.hpp	(revision 83afe0ca41bd8e0cc0befc39a4de3bddf06af5cd)
+++ 	(revision )
@@ -1,30 +1,0 @@
-// All rather small Actions should go into this file for simplicities sake
-
-#ifndef _SMALL_ACTIONS_HPP
-#define _SMALL_ACTIONS_HPP
-
-#include "Actions/Action.hpp"
-#include "Actions/Process.hpp"
-
-class MoleculeListClass;
-
-class ChangeMoleculeNameAction : public Action {
-public:
-  ChangeMoleculeNameAction(MoleculeListClass*);
-  virtual ~ChangeMoleculeNameAction();
-
-  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);
-
-  MoleculeListClass *molecules;
-  static const char NAME[];
-};
-
-
-#endif // _SMALL_ACTIONS_HPP
Index: molecuilder/src/Makefile.am
===================================================================
--- molecuilder/src/Makefile.am	(revision 83afe0ca41bd8e0cc0befc39a4de3bddf06af5cd)
+++ molecuilder/src/Makefile.am	(revision 7ac7659ca67f39e4a2fdac6063ed1783408d9cab)
@@ -50,4 +50,9 @@
 
 ACTIONSSOURCE = Actions/Action.cpp \
+  ${ATOMACTIONSOURCE} \
+  ${FRAGMENTATIONACTIONSOURCE} \
+  ${MOLECULEACTIONSOURCE} \
+  ${PARSERACTIONSOURCE} \
+  ${TESSELATIONACTIONSOURCE} \
   Actions/ActionHistory.cpp \
   Actions/ActionRegistry.cpp \
@@ -57,8 +62,12 @@
   Actions/ManipulateAtomsProcess.cpp \
   Actions/MethodAction.cpp \
-  Actions/small_actions.cpp \
   Actions/Process.cpp
 
 ACTIONSHEADER = Actions/Action.hpp \
+  ${ATOMACTIONHEADER} \
+  ${FRAGMENTATIONACTIONHEADER} \
+  ${MOLECULEACTIONHEADER} \
+  ${PARSERACTIONHEADER} \
+  ${TESSELATIONACTIONHEADER} \
   Actions/ActionHistory.hpp \
   Actions/ActionRegistry.hpp \
@@ -70,7 +79,33 @@
   Actions/ManipulateAtomsProcess.hpp \
   Actions/MethodAction.hpp \
-  Actions/small_actions.hpp \
   Actions/Process.hpp
   
+ATOMACTIONSOURCE =
+#  Actions/AtomAction/SomeAction.cpp               
+ATOMACTIONHEADER =
+#  Actions/AtomAction/SomeAction.hpp
+
+FRAGMENTATIONACTIONSOURCE = 
+#  Actions/FragmentationAction/SomeAction.cpp               
+FRAGMENTATIONACTIONHEADER =
+#  Actions/FragmentationAction/SomeAction.hpp
+
+MOLECULEACTIONSOURCE = \
+  Actions/MoleculeAction/ChangeNameAction.cpp
+MOLECULEACTIONHEADER = \
+  Actions/MoleculeAction/ChangeNameAction.hpp
+                 
+PARSERACTIONSOURCE = \
+  Actions/ParserAction/LoadXyzAction.cpp \
+  Actions/ParserAction/SaveXyzAction.cpp       
+PARSERACTIONHEADER = \
+  Actions/ParserAction/LoadXyzAction.hpp \
+  Actions/ParserAction/SaveXyzAction.hpp
+
+TESSELATIONACTIONSOURCE =
+#  Actions/TesselationAction/SomeAction.cpp               
+TESSELATIONACTIONHEADER =
+#  Actions/TesselationAction/SomeAction.hpp
+
 PARSERSOURCE = \
   Parser/ChangeTracker.cpp \
Index: molecuilder/src/builder.cpp
===================================================================
--- molecuilder/src/builder.cpp	(revision 83afe0ca41bd8e0cc0befc39a4de3bddf06af5cd)
+++ molecuilder/src/builder.cpp	(revision 7ac7659ca67f39e4a2fdac6063ed1783408d9cab)
@@ -77,5 +77,5 @@
 #include "Actions/ActionHistory.hpp"
 #include "Actions/MethodAction.hpp"
-#include "Actions/small_actions.hpp"
+#include "Actions/MoleculeAction/ChangeNameAction.hpp"
 #include "World.hpp"
 #include "version.h"
@@ -2521,5 +2521,5 @@
   new ActionMenuItem('l',"load molecule from xyz file",editMoleculesMenu,loadMoleculeAction);
 
-  Action *changeFilenameAction = new ChangeMoleculeNameAction(molecules);
+  Action *changeFilenameAction = new MoleculeChangeNameAction(molecules);
   new ActionMenuItem('n',"change molecule's name",editMoleculesMenu,changeFilenameAction);
 
