diff --git a/MAC/WinCCServices/src/Program.cc b/MAC/WinCCServices/src/Program.cc
index 85682eb6b4c4fa582c4e822da494e8e5bac09feb..2a87d676697e901ac68452b991f93011ec30202a 100644
--- a/MAC/WinCCServices/src/Program.cc
+++ b/MAC/WinCCServices/src/Program.cc
@@ -29,7 +29,7 @@ namespace LOFAR {
 
 using namespace std;
 
-void Program::init()
+Program::Program()
 {
     try
     {
@@ -42,24 +42,26 @@ void Program::init()
         HotLinkWaitForAnswerFactoryImpl factory(*toBus, dataPointNameResolver);
 
         winCCWrapper.reset(new WinCCWrapperImpl(factory));
-        winCCWrapper->init();
+
         winCCWrapper->connect_datapoints(publisherResources.getDataPoints());
     }
     catch (std::exception &e)
     {
         std::cerr << e.what() << std::endl;
         Manager::exit(0);
+
+        throw;
     }
 }
 
-void Program::run()
+Program::~Program()
 {
-    winCCWrapper->run();
+    Manager::exit(0);
 }
 
-void Program::exit()
+void Program::run()
 {
-    Manager::exit(0);
+    winCCWrapper->run();
 }
 
     } // namespace WINCCSERVICES
diff --git a/MAC/WinCCServices/src/Program.h b/MAC/WinCCServices/src/Program.h
index 1dca3b180e96967886128be339fe7c8999fe1a39..0a939bd14dba6c9d67878534f6197e5abe8e1e35 100644
--- a/MAC/WinCCServices/src/Program.h
+++ b/MAC/WinCCServices/src/Program.h
@@ -33,9 +33,10 @@ namespace LOFAR {
 class Program
 {
 public:
-    void init();
+    Program();
+    ~Program();
+
     void run();
-    void exit();
 private:
     ConfigReaderImpl configReader;
     DataPointNameResolverImpl dataPointNameResolver;
diff --git a/MAC/WinCCServices/src/WinCCPublisherMain.cc b/MAC/WinCCServices/src/WinCCPublisherMain.cc
index 4ac2853149f50006d6211ce0391f546a02ea6d22..93c935498085c5def164ab714e6cc77595f9f1f4 100644
--- a/MAC/WinCCServices/src/WinCCPublisherMain.cc
+++ b/MAC/WinCCServices/src/WinCCPublisherMain.cc
@@ -25,9 +25,7 @@ int main()
 {
     Program program;
 
-    program.init();
     program.run();
-    program.exit();
 
     return 0;
 }
\ No newline at end of file
diff --git a/MAC/WinCCServices/src/WinCCWrapper.h b/MAC/WinCCServices/src/WinCCWrapper.h
index eff52c744b50148454a52a24b970a858435455a3..fcada8698fbd94c9447478ad1dbc42ad842446c2 100644
--- a/MAC/WinCCServices/src/WinCCWrapper.h
+++ b/MAC/WinCCServices/src/WinCCWrapper.h
@@ -31,7 +31,6 @@ namespace LOFAR {
 class WinCCWrapper
 {
 public:
-    virtual void init() = 0;
     virtual bool connect_datapoints(const std::vector<std::string> &datapoints) = 0;
     virtual void run() = 0;
 };
diff --git a/MAC/WinCCServices/src/WinCCWrapperImpl.cc b/MAC/WinCCServices/src/WinCCWrapperImpl.cc
index f50eba6028c08b4ed385dbf0f04b7820521806ee..9e87aa304471a1454f8592fa35b8970efe4eff48 100644
--- a/MAC/WinCCServices/src/WinCCWrapperImpl.cc
+++ b/MAC/WinCCServices/src/WinCCWrapperImpl.cc
@@ -26,12 +26,13 @@ namespace LOFAR {
 
 using namespace std;
 
-PVSSboolean WinCCWrapperImpl::doExit = PVSS_FALSE;
+bool WinCCWrapperImpl::doExit = false;
 
 WinCCWrapperImpl::WinCCWrapperImpl(HotLinkWaitForAnswerFactory &factory) :
     Manager(ManagerIdentifier(API_MAN, Resources::getManNum())),
     factory(factory)
 {
+    init();
 }
 
 void WinCCWrapperImpl::init()
@@ -113,7 +114,7 @@ void WinCCWrapperImpl::signalHandler(int sig)
 {
     if ((sig == SIGINT) || (sig == SIGTERM))
     {
-        WinCCWrapperImpl::doExit = PVSS_TRUE;
+        WinCCWrapperImpl::doExit = true;
     }
     else
     {
diff --git a/MAC/WinCCServices/src/WinCCWrapperImpl.h b/MAC/WinCCServices/src/WinCCWrapperImpl.h
index 52a3d728980556d422714fcb73e777adfadfe155..2b171765f2d2217ebacb9572063783f2b2123864 100644
--- a/MAC/WinCCServices/src/WinCCWrapperImpl.h
+++ b/MAC/WinCCServices/src/WinCCWrapperImpl.h
@@ -36,13 +36,14 @@ class WinCCWrapperImpl : public WinCCWrapper, public Manager
 {
 public:
     WinCCWrapperImpl(HotLinkWaitForAnswerFactory &factory);
-    void init();
     bool connect_datapoints(const std::vector<std::string> &dataPoints);
     void run();
 
     virtual void signalHandler(int sig);
 private:
-    static PVSSboolean doExit;
+    void init();
+
+    static bool doExit;
     const HotLinkWaitForAnswerFactory& factory;
 };