Index: src/Actions/MapOfActions.cpp
===================================================================
--- src/Actions/MapOfActions.cpp	(revision 7230be17a3c947931703abdd76da666a44588cf3)
+++ src/Actions/MapOfActions.cpp	(revision 379b7e0da2e4b8cdad2824a51921e5596c46515c)
@@ -31,4 +31,5 @@
 #include <boost/optional.hpp>
 #include <boost/program_options.hpp>
+#include <boost/filesystem.hpp>
 
 #include <iostream>
@@ -367,5 +368,5 @@
   TypeMap["fill-void"] = &typeid(std::string);
   TypeMap["fragment-mol"] = &typeid(std::string);
-  TypeMap["input"] = &typeid(std::string);
+  TypeMap["input"] = &typeid(boost::filesystem::path);
   TypeMap["linear-interpolate"] = &typeid(std::string);
   TypeMap["molecular-volume"] = &typeid(molecule);
@@ -825,4 +826,20 @@
 }
 
+void MapOfActions::queryCurrentValue(const char * name, boost::filesystem::path&_T)
+{
+  std::string tmp;
+  if (typeid( boost::filesystem::path ) == *TypeMap[name]) {
+    if (CurrentValue.find(name) == CurrentValue.end())
+      throw MissingValueException(__FILE__, __LINE__);
+    std::istringstream stream(CurrentValue[name]);
+    CurrentValue.erase(name);
+    if (!stream.fail()) {
+      stream >> tmp >> ws;
+      _T = tmp;
+    }
+  } else
+    throw IllegalTypeException(__FILE__,__LINE__);
+}
+
 
 void MapOfActions::setCurrentValue(const char * name, class atom * &_T)
@@ -927,4 +944,14 @@
       stream << (*iter)->getId() << " ";
     }
+    CurrentValue[name] = stream.str();
+  } else
+    throw IllegalTypeException(__FILE__,__LINE__);
+}
+
+void MapOfActions::setCurrentValue(const char * name, boost::filesystem::path &_T)
+{
+  if (typeid( boost::filesystem::path ) == *TypeMap[name]) {
+    std::ostringstream stream;
+    stream << _T.string();
     CurrentValue[name] = stream.str();
   } else
Index: src/Actions/MapOfActions.hpp
===================================================================
--- src/Actions/MapOfActions.hpp	(revision 7230be17a3c947931703abdd76da666a44588cf3)
+++ src/Actions/MapOfActions.hpp	(revision 379b7e0da2e4b8cdad2824a51921e5596c46515c)
@@ -9,6 +9,7 @@
 #define MAPOFACTIONS_HPP_
 
+#include <boost/filesystem.hpp>
+#include <boost/lexical_cast.hpp>
 #include <boost/program_options.hpp>
-#include <boost/lexical_cast.hpp>
 
 #include <map>
@@ -31,4 +32,5 @@
 
 namespace po = boost::program_options;
+namespace fs = boost::filesystem;
 
 using boost::lexical_cast;
@@ -173,4 +175,5 @@
   void queryCurrentValue(const char * name, std::vector<const element *>&_T);
   void queryCurrentValue(const char * name, std::vector<molecule *>&_T);
+  void queryCurrentValue(const char * name, fs::path&_T);
   template<typename T> void queryCurrentValue(const char * name, T &_T)
   {
@@ -208,4 +211,5 @@
   void setCurrentValue(const char * name, std::vector<const element *>&_T);
   void setCurrentValue(const char * name, std::vector<molecule *>&_T);
+  void setCurrentValue(const char * name, fs::path&_T);
   template<class T> void setCurrentValue(const char * name, T &_T)
   {
Index: src/Actions/WorldAction/InputAction.cpp
===================================================================
--- src/Actions/WorldAction/InputAction.cpp	(revision 7230be17a3c947931703abdd76da666a44588cf3)
+++ src/Actions/WorldAction/InputAction.cpp	(revision 379b7e0da2e4b8cdad2824a51921e5596c46515c)
@@ -30,4 +30,6 @@
 #include <string>
 
+#include <boost/filesystem/fstream.hpp>
+
 using namespace std;
 
@@ -39,43 +41,49 @@
 /** =========== define the function ====================== */
 Action::state_ptr WorldInputAction::performCall() {
-  MoleculeListClass *molecules = World::getInstance().getMolecules();
-  molecule *mol = NULL;
-  std::ifstream test;
+//  MoleculeListClass *molecules = World::getInstance().getMolecules();
+//  molecule *mol = NULL;
+  boost::filesystem::ifstream test;
 
   // obtain information
   getParametersfromValueStorage();
 
-  DoLog(0) && (Log() << Verbose(0) << "Config file given." << endl);
-  if (params.filename.find('.') != string::npos) {
-    std::string FilenamePrefix = params.filename.substr(0,params.filename.find_last_of('.'));
-    std::string FilenameSuffix = params.filename.substr(params.filename.find_last_of('.')+1, params.filename.length());
-    DoLog(1) && (Log() << Verbose(1) << "Setting config file name prefix to " << FilenamePrefix << "." << endl);
-    test.open(params.filename.c_str());
-    if (test == NULL) {
-      DoLog(1) && (Log() << Verbose(1) << "Specified config file " << params.filename << " not found." << endl);
+  DoLog(0) && (Log() << Verbose(0) << "Config file given " << params.filename << "." << endl);
+  if (!boost::filesystem::exists(params.filename)) {
+    DoLog(1) && (Log() << Verbose(1) << "Specified config file " << params.filename << " not found." << endl);
+    return Action::failure;
+  } else {
+    DoLog(1) && (Log() << Verbose(1) << "Specified config file found, parsing ... ");
+    if (params.filename.has_filename()) {
+      // get suffix
+      std::string FilenameSuffix = params.filename.extension();
+      std::string FilenamePrefix = params.filename.stem();
+      DoLog(1) && (Log() << Verbose(1) << "Setting config file name prefix to " << FilenamePrefix << "." << endl);
+      FormatParserStorage::getInstance().SetOutputPrefixForAll(FilenamePrefix);
+
+      // parse the file
+      test.open(params.filename);
+      FormatParserStorage::getInstance().get(test, FilenameSuffix);
+      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(params.filename.substr(0,params.filename.find('.')).c_str());
+      return Action::success;
     } else {
-      DoLog(1) && (Log() << Verbose(1) << "Specified config file found, parsing ... ");
-      FormatParserStorage::getInstance().get((std::istream &)test, FilenameSuffix);
-      test.close();
+      DoeLog(1) && (eLog() << Verbose(1) << "Input file does not have a suffix, cannot recognize format." << endl);
+      return Action::failure;
     }
-    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(params.filename.substr(0,params.filename.find('.')).c_str());
-  } else {
-    DoeLog(1) && (eLog() << Verbose(1) << "Input file does not have a suffix, cannot recognize format." << endl);
   }
-  return Action::success;
 }
 
Index: src/Actions/WorldAction/InputAction.def
===================================================================
--- src/Actions/WorldAction/InputAction.def	(revision 7230be17a3c947931703abdd76da666a44588cf3)
+++ src/Actions/WorldAction/InputAction.def	(revision 379b7e0da2e4b8cdad2824a51921e5596c46515c)
@@ -7,10 +7,10 @@
 
 // all includes and forward declarations necessary for non-integral types below
-
+#include <boost/filesystem.hpp>
 
 // i.e. there is an integer with variable name Z that can be found in
 // ValueStorage by the token "Z" -> first column: int, Z, "Z"
 // "undefine" if no parameters are required
-#define paramtypes (std::string)
+#define paramtypes (boost::filesystem::path)
 #define paramtokens (WorldInputAction::NAME)
 #define paramreferences (filename)
