diff --git a/src/AbstractObjects/OpalData.h b/src/AbstractObjects/OpalData.h
index bcb83da83079d470a667f502f0062e3e9690c627..3f7b2b4c72153b3740566de376e1a5bbafa6b0ec 100644
--- a/src/AbstractObjects/OpalData.h
+++ b/src/AbstractObjects/OpalData.h
@@ -258,7 +258,7 @@ public:
 
 private:
     static bool isInstantiated;
-    static OpalData* instance;
+    static OpalData* instance;             // \todo should be a smart pointer and we then should get ridd of deleteInstance
     static std::stack<OpalData*> stashedInstances;
 
     OpalData();
diff --git a/src/Main.cpp b/src/Main.cpp
index 8fbafa2ec5fccda61a797b09449f65ba294c863e..78fdd2d1592a9b2b12a2d4ba282e4552f51861e6 100644
--- a/src/Main.cpp
+++ b/src/Main.cpp
@@ -176,7 +176,8 @@ int main(int argc, char* argv[]) {
 
                 if (is) {
                     *gmsg << "Reading startup file '" << startup << "'" << endl;
-                    parser.run(is);
+                    parser.
+                        run(is);
                     *gmsg << "Finished reading startup file." << endl;
                 }
                 FileStream::setEcho(Options::echo);
@@ -379,7 +380,9 @@ int main(int argc, char* argv[]) {
 
         } catch (EarlyLeaveException& ex) {
             // do nothing here
-        } catch (OpalException& ex) {
+        }
+
+        catch (OpalException& ex) {
             Inform errorMsg("Error", std::cerr, INFORM_ALL_NODES);
             errorMsg << "\n*** User error detected by function \"" << ex.where() << "\"\n";
             // stat->printWhere(errorMsg, true);
@@ -489,10 +492,14 @@ int main(int argc, char* argv[]) {
         IpplTimings::print(
             std::string("timing.dat"), OpalData::getInstance()->getProblemCharacteristicValues());
 
+        
         ippl::Comm->barrier();
         Fieldmap::clearDictionary();
-        OpalData::deleteInstance();
+
+        // \todo we should not need this OpalData::deleteInstance();
+
         delete gmsg;
+        ippl::finalize();
         return 0;
     }
 }