Index: trunk/FACT++/src/HeadersFAD.h
===================================================================
--- trunk/FACT++/src/HeadersFAD.h	(revision 13909)
+++ trunk/FACT++/src/HeadersFAD.h	(revision 13910)
@@ -55,16 +55,19 @@
     };
 
-    enum States
-    {
-        // State Machine states
-        kOffline = 1,   // StateMachineImp::kSM_UserMode
-        kDisconnected,
-        kConnecting,
-        kConnected,
-        kConfiguring1,
-        kConfiguring2,
-        kConfigured,
-        kWritingData
-    };
+    namespace State
+    {
+        enum States
+        {
+            // State Machine states
+            kOffline = 1,   // StateMachineImp::kSM_UserMode
+            kDisconnected,
+            kConnecting,
+            kConnected,
+            kConfiguring1,
+            kConfiguring2,
+            kConfigured,
+            kWritingData
+        };
+    }
 
     enum FileFormat_t
Index: trunk/FACT++/src/HeadersFTM.h
===================================================================
--- trunk/FACT++/src/HeadersFTM.h	(revision 13909)
+++ trunk/FACT++/src/HeadersFTM.h	(revision 13910)
@@ -32,17 +32,20 @@
     // running: not locked: 0x2713
 
-    enum StateMachine
-    {
-        kDisconnected = 1, //= ConnectionFTM::kDisconnected,
-        kConnected,        //= ConnectionFTM::kConnected,
-        kIdle,             //= ConnectionFTM::kIdle,
-        kTriggerOn,        //= ConnectionFTM::kTriggerOn,
-        kConfiguring1,
-        kConfiguring2,
-        kConfigured,
-
-        kConfigError1 = 0x101,
-        kConfigError2 = 0x102,
-    };
+    namespace State
+    {
+        enum StateMachine
+        {
+            kDisconnected = 1, //= ConnectionFTM::kDisconnected,
+            kConnected,        //= ConnectionFTM::kConnected,
+            kIdle,             //= ConnectionFTM::kIdle,
+            kTriggerOn,        //= ConnectionFTM::kTriggerOn,
+            kConfiguring1,
+            kConfiguring2,
+            kConfigured,
+
+            kConfigError1 = 0x101,
+            kConfigError2 = 0x102,
+        };
+    }
 
     /// Command codes for FTM communication
Index: trunk/FACT++/src/fadctrl.cc
===================================================================
--- trunk/FACT++/src/fadctrl.cc	(revision 13909)
+++ trunk/FACT++/src/fadctrl.cc	(revision 13910)
@@ -1073,5 +1073,5 @@
             fNightAsInt = InitRunNumber();
             if (fNightAsInt<0)
-                return FAD::kConnected;
+                return FAD::State::kConnected;
         }
 
@@ -1125,5 +1125,5 @@
         fConfigTimer = Time();
 
-        return FAD::kConfiguring1;
+        return FAD::State::kConfiguring1;
     }
 
@@ -1133,5 +1133,5 @@
         fDimStartRun.Update(runs);
 
-        return FAD::kConnected;
+        return FAD::State::kConnected;
     }
 
@@ -1434,5 +1434,5 @@
         if (nconnecting1==0 && nconnected1>0 && nconnected2==nconnected1)
         {
-            if (T::GetCurrentState()==FAD::kConfiguring1)
+            if (T::GetCurrentState()==FAD::State::kConfiguring1)
             {
                 // We need some delay so that the FAD is not busy anymore
@@ -1440,20 +1440,20 @@
                 // FIXME: Do we need this to be configurable?
                 if (Time()-fConfigTimer<boost::posix_time::milliseconds(3000))
-                    return FAD::kConfiguring1;
+                    return FAD::State::kConfiguring1;
 
                 for (BoardList::iterator it=fBoards.begin(); it!=fBoards.end(); it++)
                     it->second->Cmd(FAD::kCmdSingleTrigger);
 
-                return FAD::kConfiguring2;
+                return FAD::State::kConfiguring2;
             }
 
             // If all boards are configured and we are configuring
             // go on and start the FADs
-            if (T::GetCurrentState()==FAD::kConfiguring2)
+            if (T::GetCurrentState()==FAD::State::kConfiguring2)
             {
                 // If not all boards have yet received the proper
                 // configuration
                 if (nconfigured!=nconnected1)
-                    return FAD::kConfiguring2;
+                    return FAD::State::kConfiguring2;
 
                 // FIXME: Distinguish between not all boards have received
@@ -1477,8 +1477,8 @@
                     //        successfully enabled the trigger lines?
                 }
-                return FAD::kConfigured;
-            }
-
-            if (T::GetCurrentState()==FAD::kConfigured)
+                return FAD::State::kConfigured;
+            }
+
+            if (T::GetCurrentState()==FAD::State::kConfigured)
             {
                 // Stay in Configured as long as we have a valid
@@ -1487,5 +1487,5 @@
                 // first event)
                 if (!IsRunStarted() && nconfigured==nconnected1)
-                    return FAD::kConfigured;
+                    return FAD::State::kConfigured;
 
                 if (IsRunStarted())
@@ -1495,12 +1495,12 @@
             }
 
-            return GetNumFilesOpen()>0 ? FAD::kWritingData : FAD::kConnected;
+            return GetNumFilesOpen()>0 ? FAD::State::kWritingData : FAD::State::kConnected;
         }
 
         if (nconnecting1>0 || nconnecting2>0 || nconnected1!=nconnected2)
-            return FAD::kConnecting;
+            return FAD::State::kConnecting;
 
         // nconnected1 == nconnected2 == 0
-        return runs ? FAD::kDisconnected : FAD::kOffline;
+        return runs ? FAD::State::kDisconnected : FAD::State::kOffline;
     }
 
@@ -1571,34 +1571,34 @@
 
         // State names
-        T::AddStateName(FAD::kOffline, "Disengaged",
+        T::AddStateName(FAD::State::kOffline, "Disengaged",
                         "All enabled FAD boards are disconnected and the event-builer thread is not running.");
 
-        T::AddStateName(FAD::kDisconnected, "Disconnected",
+        T::AddStateName(FAD::State::kDisconnected, "Disconnected",
                         "All enabled FAD boards are disconnected, but the event-builder thread is running.");
 
-        T::AddStateName(FAD::kConnecting, "Connecting",
+        T::AddStateName(FAD::State::kConnecting, "Connecting",
                         "Only some enabled FAD boards are connected.");
 
-        T::AddStateName(FAD::kConnected, "Connected",
+        T::AddStateName(FAD::State::kConnected, "Connected",
                         "All enabled FAD boards are connected..");
 
-        T::AddStateName(FAD::kConfiguring1, "Configuring1",
+        T::AddStateName(FAD::State::kConfiguring1, "Configuring1",
                         "Waiting 3 seconds for all FADs to be configured before requesting configuration.");
 
-        T::AddStateName(FAD::kConfiguring2, "Configuring2",
+        T::AddStateName(FAD::State::kConfiguring2, "Configuring2",
                         "Waiting until all boards returned their configuration and they are valid.");
 
-        T::AddStateName(FAD::kConfigured, "Configured",
+        T::AddStateName(FAD::State::kConfigured, "Configured",
                         "The configuration of all boards was successfully cross checked. Waiting for events with a new run number to receive.");
 
-        T::AddStateName(FAD::kWritingData, "WritingData",
+        T::AddStateName(FAD::State::kWritingData, "WritingData",
                         "The event builder has an open file (that does not mean that new events are currently received)");
 
         // FAD Commands
-        T::AddEvent("SEND_CMD", "I:1", FAD::kConnecting, FAD::kConnected, FAD::kWritingData)
+        T::AddEvent("SEND_CMD", "I:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kWritingData)
             (bind(&StateMachineFAD::SendCmd, this, placeholders::_1))
             ("Send a command to the FADs. Values between 0 and 0xffff are allowed."
              "|command[uint16]:Command to be transmittted.");
-        T::AddEvent("SEND_DATA", "I:2", FAD::kConnecting, FAD::kConnected, FAD::kWritingData)
+        T::AddEvent("SEND_DATA", "I:2", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kWritingData)
             (bind(&StateMachineFAD::SendCmdData, this, placeholders::_1))
             ("Send a command with data to the FADs. Values between 0 and 0xffff are allowed."
@@ -1606,33 +1606,33 @@
              "|data[uint16]:Data to be sent with the command.");
 
-        T::AddEvent("ENABLE_SRCLK", "B:1", FAD::kConnecting, FAD::kConnected, FAD::kWritingData)
+        T::AddEvent("ENABLE_SRCLK", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kWritingData)
             (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdSrclk))
             ("Set SRCLK");
-        T::AddEvent("ENABLE_BUSY_OFF", "B:1", FAD::kConnecting, FAD::kConnected, FAD::kWritingData)
+        T::AddEvent("ENABLE_BUSY_OFF", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kWritingData)
             (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdBusyOff))
             ("Set BUSY continously low");
-        T::AddEvent("ENABLE_BUSY_ON", "B:1", FAD::kConnecting, FAD::kConnected, FAD::kWritingData)
+        T::AddEvent("ENABLE_BUSY_ON", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kWritingData)
             (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdBusyOn))
             ("Set BUSY constantly high (has priority over BUSY_OFF)");
-        T::AddEvent("ENABLE_SCLK", "B:1", FAD::kConnecting, FAD::kConnected, FAD::kWritingData)
+        T::AddEvent("ENABLE_SCLK", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kWritingData)
             (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdSclk))
             ("Set SCLK");
-        T::AddEvent("ENABLE_DRS", "B:1", FAD::kConnecting, FAD::kConnected, FAD::kWritingData)
+        T::AddEvent("ENABLE_DRS", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kWritingData)
             (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdDrsEnable))
             ("Switch Domino wave");
-        T::AddEvent("ENABLE_DWRITE", "B:1", FAD::kConnecting, FAD::kConnected, FAD::kWritingData)
+        T::AddEvent("ENABLE_DWRITE", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kWritingData)
             (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdDwrite))
             ("Set Dwrite (possibly high / always low)");
-        T::AddEvent("ENABLE_CONTINOUS_TRIGGER", "B:1", FAD::kConnecting, FAD::kConnected, FAD::kWritingData)
+        T::AddEvent("ENABLE_CONTINOUS_TRIGGER", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kWritingData)
             (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdContTrigger))
             ("Enable continous (internal) trigger.");
-        T::AddEvent("ENABLE_TRIGGER_LINE", "B:1", FAD::kConnecting, FAD::kConnected, FAD::kWritingData)
+        T::AddEvent("ENABLE_TRIGGER_LINE", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kWritingData)
             (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdTriggerLine))
             ("Incoming triggers can be accepted/will not be accepted");
-        T::AddEvent("ENABLE_COMMAND_SOCKET_MODE", "B:1", FAD::kConnecting, FAD::kConnected, FAD::kWritingData)
+        T::AddEvent("ENABLE_COMMAND_SOCKET_MODE", "B:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kWritingData)
             (bind(&StateMachineFAD::CmdEnable, this, placeholders::_1, FAD::kCmdSocket))
             ("Set debug mode (yes: dump events through command socket, no=dump events through other sockets)");
 
-        T::AddEvent("SET_TRIGGER_RATE", "I:1", FAD::kConnecting, FAD::kConnected, FAD::kWritingData)
+        T::AddEvent("SET_TRIGGER_RATE", "I:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kWritingData)
             (bind(&StateMachineFAD::SetTriggerRate, this, placeholders::_1))
             ("Enable continous trigger");
@@ -1640,5 +1640,5 @@
             (bind(&StateMachineFAD::Trigger, this, 1))
             ("Issue software triggers");
-        T::AddEvent("SEND_N_TRIGGERS", "I", FAD::kConnecting, FAD::kConnected, FAD::kWritingData)
+        T::AddEvent("SEND_N_TRIGGERS", "I", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kWritingData)
             (bind(&StateMachineFAD::SendTriggers, this, placeholders::_1))
             ("Issue N software triggers (note that these are the triggers sent, not the triggers executed)"
@@ -1652,14 +1652,14 @@
             ("");
             */
-        T::AddEvent("PHASE_SHIFT", "S:1", FAD::kConnecting, FAD::kConnected, FAD::kWritingData)
+        T::AddEvent("PHASE_SHIFT", "S:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kWritingData)
             (bind(&StateMachineFAD::PhaseShift, this, placeholders::_1))
             ("Adjust ADC phase (in 'steps')"
              "|phase[short]");
 
-        T::AddEvent("RESET_EVENT_COUNTER", FAD::kConnecting, FAD::kConnected, FAD::kWritingData)
+        T::AddEvent("RESET_EVENT_COUNTER", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kWritingData)
             (bind(&StateMachineFAD::Cmd, this, FAD::kCmdResetEventCounter))
             ("Reset the FAD boards' event counter to 0.");
 
-        T::AddEvent("SET_RUN_NUMBER", "X:1", FAD::kConnecting, FAD::kConnected, FAD::kWritingData)
+        T::AddEvent("SET_RUN_NUMBER", "X:1", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kWritingData)
             (bind(&StateMachineFAD::SetRunNumber, this, placeholders::_1))
             ("Sent a new run-number to the boards"
@@ -1671,5 +1671,5 @@
              "|memory[short]:Buffer size in Mega-bytes.");
 
-        T::AddEvent("SET_REGISTER", "I:2", FAD::kConnecting, FAD::kConnected, FAD::kWritingData)
+        T::AddEvent("SET_REGISTER", "I:2", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kWritingData)
             (bind(&StateMachineFAD::SetRegister, this, placeholders::_1))
             ("set register to value"
@@ -1678,5 +1678,5 @@
 
         // FIXME:  Maybe add a mask which channels should be set?
-        T::AddEvent("SET_REGION_OF_INTEREST", "I:2", FAD::kConnecting, FAD::kConnected, FAD::kWritingData)
+        T::AddEvent("SET_REGION_OF_INTEREST", "I:2", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kWritingData)
             (bind(&StateMachineFAD::SetRoi, this, placeholders::_1))
             ("Set region-of-interest to value"
@@ -1685,5 +1685,5 @@
 
         // FIXME:  Maybe add a mask which channels should be set?
-        T::AddEvent("SET_DAC_VALUE", "I:2", FAD::kConnecting, FAD::kConnected, FAD::kWritingData)
+        T::AddEvent("SET_DAC_VALUE", "I:2", FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kWritingData)
             (bind(&StateMachineFAD::SetDac, this, placeholders::_1))
             ("Set DAC numbers in range to value"
@@ -1691,5 +1691,5 @@
             "|val[short]:Value to be set");
 
-        T::AddEvent("CONFIGURE", "X:2;C", FAD::kConnected, FAD::kConfigured, FAD::kWritingData)
+        T::AddEvent("CONFIGURE", "X:2;C", FAD::State::kConnected, FAD::State::kConfigured, FAD::State::kWritingData)
             (bind(&StateMachineFAD::StartConfigure, this, placeholders::_1))
             ("Configure a new run. If the internla trigger is enabled this might even start a new run."
@@ -1698,5 +1698,5 @@
              "|run_type[string]:Run type which describes the runs");
 
-        T::AddEvent("RESET_CONFIGURE", FAD::kConfiguring1, FAD::kConfiguring2, FAD::kConfigured)
+        T::AddEvent("RESET_CONFIGURE", FAD::State::kConfiguring1, FAD::State::kConfiguring2, FAD::State::kConfigured)
             (bind(&StateMachineFAD::ResetConfig, this))
             ("If configuration failed and the fadctrl is waiting for something, use this to reset the state.");
@@ -1769,5 +1769,5 @@
              "|enable[bool]:Whether the event builder should ignore data from this slot (yes) or allowed (no)");
 
-        T::AddEvent("CLOSE_OPEN_FILES", FAD::kDisconnected, FAD::kConnecting, FAD::kConnected, FAD::kWritingData)
+        T::AddEvent("CLOSE_OPEN_FILES", FAD::State::kDisconnected, FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kWritingData)
             (bind(&StateMachineFAD::CloseOpenFiles, this))
             ("Close all run files opened by the EventBuilder.");
@@ -1780,33 +1780,33 @@
 
         // Conenction commands
-        T::AddEvent("START", FAD::kOffline)
+        T::AddEvent("START", FAD::State::kOffline)
             (bind(&StateMachineFAD::StartConnection, this))
             ("Start EventBuilder thread and connect all valid slots.");
 
-        T::AddEvent("STOP",  FAD::kDisconnected, FAD::kConnecting, FAD::kConnected, FAD::kWritingData)
+        T::AddEvent("STOP",  FAD::State::kDisconnected, FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kWritingData)
             (bind(&StateMachineFAD::StopConnection, this))
             ("Stop EventBuilder thread (still write buffered events) and disconnect all slots.");
 
-        T::AddEvent("ABORT", FAD::kDisconnected, FAD::kConnecting, FAD::kConnected, FAD::kWritingData)
+        T::AddEvent("ABORT", FAD::State::kDisconnected, FAD::State::kConnecting, FAD::State::kConnected, FAD::State::kWritingData)
             (bind(&StateMachineFAD::AbortConnection, this))
             ("Immediately abort EventBuilder thread and disconnect all slots.");
 
-        T::AddEvent("SOFT_RESET", FAD::kConnected, FAD::kWritingData)
+        T::AddEvent("SOFT_RESET", FAD::State::kConnected, FAD::State::kWritingData)
             (bind(&StateMachineFAD::Reset, this, true))
             ("Wait for buffers to drain, close all files and reinitialize event builder thread.");
 
-        T::AddEvent("HARD_RESET", FAD::kConnected, FAD::kWritingData)
+        T::AddEvent("HARD_RESET", FAD::State::kConnected, FAD::State::kWritingData)
             (bind(&StateMachineFAD::Reset, this, false))
             ("Free all buffers, close all files and reinitialize event builder thread.");
 
-        T::AddEvent("CONNECT", "S:1", FAD::kDisconnected, FAD::kConnecting, FAD::kConnected)
+        T::AddEvent("CONNECT", "S:1", FAD::State::kDisconnected, FAD::State::kConnecting, FAD::State::kConnected)
             (bind(&StateMachineFAD::EnableSlot, this, placeholders::_1, true))
             ("Connect a disconnected slot.");
 
-        T::AddEvent("DISCONNECT", "S:1", FAD::kConnecting, FAD::kConnected)
+        T::AddEvent("DISCONNECT", "S:1", FAD::State::kConnecting, FAD::State::kConnected)
             (bind(&StateMachineFAD::EnableSlot, this, placeholders::_1, false))
             ("Disconnect a connected slot.");
 
-        T::AddEvent("TOGGLE", "S:1", FAD::kDisconnected, FAD::kConnecting, FAD::kConnected)
+        T::AddEvent("TOGGLE", "S:1", FAD::State::kDisconnected, FAD::State::kConnecting, FAD::State::kConnected)
             (bind(&StateMachineFAD::ToggleSlot, this, placeholders::_1))
             ("");
@@ -1830,9 +1830,9 @@
 
 
-        T::AddEvent("ADD_ADDRESS", "C", FAD::kOffline)
+        T::AddEvent("ADD_ADDRESS", "C", FAD::State::kOffline)
             (bind(&StateMachineFAD::AddAddress, this, placeholders::_1))
             ("Add the address of a DRS4 board to the first free slot"
              "|IP[string]:address in the format <address:port>");
-        T::AddEvent("REMOVE_SLOT", "S:1", FAD::kOffline)
+        T::AddEvent("REMOVE_SLOT", "S:1", FAD::State::kOffline)
             (bind(&StateMachineFAD::RemoveSlot, this, placeholders::_1))
             ("Remove the Iaddress in slot n. For a list see LIST"
Index: trunk/FACT++/src/ftmctrl.cc
===================================================================
--- trunk/FACT++/src/ftmctrl.cc	(revision 13909)
+++ trunk/FACT++/src/ftmctrl.cc	(revision 13910)
@@ -20,5 +20,4 @@
 
 using namespace std;
-using namespace std::placeholders;
 
 // ------------------------------------------------------------------------
@@ -1888,5 +1887,5 @@
         fFTM.CmdStopRun();
 
-        return FTM::kConfiguring1;
+        return FTM::State::kConfiguring1;
     }
 
@@ -1909,6 +1908,6 @@
         switch (fFTM.GetState())
         {
-        case ConnectionFTM::kDisconnected: return FTM::kDisconnected;
-        case ConnectionFTM::kConnected:    return FTM::kConnected;
+        case ConnectionFTM::kDisconnected: return FTM::State::kDisconnected;
+        case ConnectionFTM::kConnected:    return FTM::State::kConnected;
         default:
             break;
@@ -1917,5 +1916,5 @@
         switch (T::GetCurrentState())
         {
-        case FTM::kConfiguring1:
+        case FTM::State::kConfiguring1:
             // If FTM has received an anwer to the stop_run command
             // the counter for the registers has been increased
@@ -1927,5 +1926,5 @@
             if (fFTM.GetState()!=ConnectionFTM::kIdle &&
                 fFTM.GetState()!=ConnectionFTM::kConfigured)
-                return FTM::kConfigError1;
+                return FTM::State::kConfigError1;
 
             fCounterStat = fFTM.GetCounter(FTM::kStaticData);
@@ -1936,8 +1935,8 @@
 
             // Next state is: wait for the answer to our configuration
-            return FTM::kConfiguring2;
-
-        case FTM::kConfiguring2:
-        case FTM::kConfigured:
+            return FTM::State::kConfiguring2;
+
+        case FTM::State::kConfiguring2:
+        case FTM::State::kConfigured:
             // If FTM has received an anwer to the stop_run command
             // the counter for the registers has been increased
@@ -1949,5 +1948,5 @@
             // ======================
             if (fFTM.GetState()!=ConnectionFTM::kConfigured)
-                return FTM::kConfigError2;
+                return FTM::State::kConfigError2;
             // ======================
 
@@ -1960,12 +1959,12 @@
 
             // Next state is: wait for the answer to our configuration
-            return FTM::kConfigured;
+            return FTM::State::kConfigured;
 
         default:
             switch (fFTM.GetState())
             {
-            case ConnectionFTM::kIdle:         return FTM::kIdle;
-            case ConnectionFTM::kConfigured:   return FTM::kIdle;
-            case ConnectionFTM::kTriggerOn:    return FTM::kTriggerOn;
+            case ConnectionFTM::kIdle:         return FTM::State::kIdle;
+            case ConnectionFTM::kConfigured:   return FTM::State::kIdle;
+            case ConnectionFTM::kTriggerOn:    return FTM::State::kTriggerOn;
             default:
                 throw runtime_error("StateMachienFTM - Execute() - Inavlid state.");
@@ -1973,7 +1972,7 @@
         }
 
-        if (T::GetCurrentState()==FTM::kConfigured &&
+        if (T::GetCurrentState()==FTM::State::kConfigured &&
             fFTM.GetState()==ConnectionFTM::kTriggerOn)
-            return FTM::kTriggerOn;
+            return FTM::State::kTriggerOn;
 
         return T::GetCurrentState();
@@ -1994,49 +1993,49 @@
 
         // State names
-        T::AddStateName(FTM::kDisconnected, "Disconnected",
+        T::AddStateName(FTM::State::kDisconnected, "Disconnected",
                         "FTM board not connected via ethernet.");
 
-        T::AddStateName(FTM::kConnected, "Connected",
+        T::AddStateName(FTM::State::kConnected, "Connected",
                         "Ethernet connection to FTM established (no state received yet).");
 
-        T::AddStateName(FTM::kIdle, "Idle",
+        T::AddStateName(FTM::State::kIdle, "Idle",
                         "Ethernet connection to FTM established, FTM in idle state.");
 
-        T::AddStateName(FTM::kConfiguring1, "Configuring1",
+        T::AddStateName(FTM::State::kConfiguring1, "Configuring1",
                         "Command to diable run sent... waiting for response.");
-        T::AddStateName(FTM::kConfiguring2, "Configuring2",
+        T::AddStateName(FTM::State::kConfiguring2, "Configuring2",
                         "New configuration sent... waiting for response.");
-        T::AddStateName(FTM::kConfigured,   "Configured",
+        T::AddStateName(FTM::State::kConfigured,   "Configured",
                         "Received answer identical with target configuration.");
 
-        T::AddStateName(FTM::kTriggerOn, "TriggerOn",
+        T::AddStateName(FTM::State::kTriggerOn, "TriggerOn",
                         "Ethernet connection to FTM established, FTM trigger output to FADs enabled.");
 
-        T::AddStateName(FTM::kConfigError1, "ErrorInConfig1", "");
-        T::AddStateName(FTM::kConfigError2, "ErrorInConfig2", "");
+        T::AddStateName(FTM::State::kConfigError1, "ErrorInConfig1", "");
+        T::AddStateName(FTM::State::kConfigError2, "ErrorInConfig2", "");
 
         // FTM Commands
-        T::AddEvent("TOGGLE_LED", FTM::kIdle)
+        T::AddEvent("TOGGLE_LED", FTM::State::kIdle)
             (Wrapper(bind(&ConnectionFTM::CmdToggleLed, &fFTM)))
             ("toggle led");
 
-        T::AddEvent("PING", FTM::kIdle)
+        T::AddEvent("PING", FTM::State::kIdle)
             (Wrapper(bind(&ConnectionFTM::CmdPing, &fFTM)))
             ("send ping");
 
-        T::AddEvent("REQUEST_DYNAMIC_DATA", FTM::kIdle)
+        T::AddEvent("REQUEST_DYNAMIC_DATA", FTM::State::kIdle)
             (Wrapper(bind(&ConnectionFTM::CmdReqDynDat, &fFTM)))
             ("request transmission of dynamic data block");
 
-        T::AddEvent("REQUEST_STATIC_DATA", FTM::kIdle)
+        T::AddEvent("REQUEST_STATIC_DATA", FTM::State::kIdle)
             (Wrapper(bind(&ConnectionFTM::CmdReqStatDat, &fFTM)))
             ("request transmission of static data from FTM to memory");
 
-        T::AddEvent("GET_REGISTER", "I", FTM::kIdle)
+        T::AddEvent("GET_REGISTER", "I", FTM::State::kIdle)
             (bind(&StateMachineFTM::GetRegister, this, placeholders::_1))
             ("read register from address addr"
             "|addr[short]:Address of register");
 
-        T::AddEvent("SET_REGISTER", "I:2", FTM::kIdle)
+        T::AddEvent("SET_REGISTER", "I:2", FTM::State::kIdle)
             (bind(&StateMachineFTM::SetRegister, this, placeholders::_1))
             ("set register to value"
@@ -2044,22 +2043,22 @@
             "|val[short]:Value to be set");
 
-        T::AddEvent("START_TRIGGER", FTM::kIdle, FTM::kConfigured)
+        T::AddEvent("START_TRIGGER", FTM::State::kIdle, FTM::State::kConfigured)
             (Wrapper(bind(&ConnectionFTM::CmdStartRun, &fFTM)))
             ("start a run (start distributing triggers)");
 
-        T::AddEvent("STOP_TRIGGER", FTM::kTriggerOn)
+        T::AddEvent("STOP_TRIGGER", FTM::State::kTriggerOn)
             (Wrapper(bind(&ConnectionFTM::CmdStopRun, &fFTM)))
             ("stop a run (stop distributing triggers)");
 
-        T::AddEvent("TAKE_N_EVENTS", "I", FTM::kIdle)
+        T::AddEvent("TAKE_N_EVENTS", "I", FTM::State::kIdle)
             (bind(&StateMachineFTM::TakeNevents, this, placeholders::_1))
             ("take n events (distribute n triggers)|number[int]:Number of events to be taken");
 
-        T::AddEvent("DISABLE_REPORTS", "B", FTM::kIdle)
+        T::AddEvent("DISABLE_REPORTS", "B", FTM::State::kIdle)
             (bind(&StateMachineFTM::DisableReports, this, placeholders::_1))
             ("disable sending rate reports"
              "|status[bool]:disable or enable that the FTM sends rate reports (yes/no)");
 
-        T::AddEvent("SET_THRESHOLD", "I:2", FTM::kIdle, FTM::kConfigured, FTM::kTriggerOn)
+        T::AddEvent("SET_THRESHOLD", "I:2", FTM::State::kIdle, FTM::State::kConfigured, FTM::State::kTriggerOn)
             (bind(&StateMachineFTM::SetThreshold, this, placeholders::_1))
             ("Set the comparator threshold"
@@ -2067,5 +2066,5 @@
              "|Threshold[counts]:Threshold to be set in binary counts");
 
-        T::AddEvent("SET_N_OUT_OF_4", "I:2", FTM::kIdle, FTM::kTriggerOn)
+        T::AddEvent("SET_N_OUT_OF_4", "I:2", FTM::State::kIdle, FTM::State::kTriggerOn)
             (bind(&StateMachineFTM::SetNoutof4, this, placeholders::_1))
             ("Set the comparator threshold"
@@ -2073,9 +2072,9 @@
              "|Threshold[counts]:Threshold to be set in binary counts");
 
-        T::AddEvent("SET_PRESCALING", "I:1", FTM::kIdle)
+        T::AddEvent("SET_PRESCALING", "I:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::SetPrescaling, this, placeholders::_1))
             ("");
 
-        T::AddEvent("ENABLE_FTU", "I:1;B:1", FTM::kIdle)
+        T::AddEvent("ENABLE_FTU", "I:1;B:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::EnableFTU, this, placeholders::_1))
             ("Enable or disable FTU"
@@ -2083,58 +2082,58 @@
              "|Enable[bool]:Whether FTU should be enabled or disabled (yes/no)");
 
-        T::AddEvent("DISABLE_PIXEL", "S:1", FTM::kIdle, FTM::kTriggerOn)
+        T::AddEvent("DISABLE_PIXEL", "S:1", FTM::State::kIdle, FTM::State::kTriggerOn)
             (bind(&StateMachineFTM::EnablePixel, this, placeholders::_1, false))
             ("(-1 or all)");
 
-        T::AddEvent("ENABLE_PIXEL", "S:1", FTM::kIdle, FTM::kTriggerOn)
+        T::AddEvent("ENABLE_PIXEL", "S:1", FTM::State::kIdle, FTM::State::kTriggerOn)
             (bind(&StateMachineFTM::EnablePixel, this, placeholders::_1, true))
             ("(-1 or all)");
 
-        T::AddEvent("DISABLE_ALL_PIXELS_EXCEPT", "S:1", FTM::kIdle)
+        T::AddEvent("DISABLE_ALL_PIXELS_EXCEPT", "S:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::DisableAllPixelsExcept, this, placeholders::_1))
             ("");
 
-        T::AddEvent("DISABLE_ALL_PATCHES_EXCEPT", "S:1", FTM::kIdle)
+        T::AddEvent("DISABLE_ALL_PATCHES_EXCEPT", "S:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::DisableAllPatchesExcept, this, placeholders::_1))
             ("");
 
-        T::AddEvent("ENABLE_PATCH", "S:1", FTM::kIdle)
+        T::AddEvent("ENABLE_PATCH", "S:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::EnablePatch, this, placeholders::_1, true))
             ("");
 
-        T::AddEvent("DISABLE_PATCH", "S:1", FTM::kIdle)
+        T::AddEvent("DISABLE_PATCH", "S:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::EnablePatch, this, placeholders::_1, false))
             ("");
 
-        T::AddEvent("TOGGLE_PIXEL", "S:1", FTM::kIdle)
+        T::AddEvent("TOGGLE_PIXEL", "S:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::TogglePixel, this, placeholders::_1))
             ("");
 
-        T::AddEvent("TOGGLE_FTU", "I:1", FTM::kIdle)
+        T::AddEvent("TOGGLE_FTU", "I:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::ToggleFTU, this, placeholders::_1))
             ("Toggle status of FTU (this is mainly meant to be used in the GUI)"
              "|Board[idx]:Index of the board (0-39)");
 
-        T::AddEvent("SET_TRIGGER_INTERVAL", "I:1", FTM::kIdle)
+        T::AddEvent("SET_TRIGGER_INTERVAL", "I:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::SetTriggerInterval, this, placeholders::_1))
             ("Sets the trigger interval which is the distance between two consecutive artificial triggers."
              "|interval[int]:The applied trigger interval is: interval*4ns+8ns");
 
-        T::AddEvent("SET_TRIGGER_DELAY", "I:1", FTM::kIdle)
+        T::AddEvent("SET_TRIGGER_DELAY", "I:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::SetTriggerDelay, this, placeholders::_1))
             (""
              "|delay[int]:The applied trigger delay is: delay*4ns+8ns");
 
-        T::AddEvent("SET_TIME_MARKER_DELAY", "I:1", FTM::kIdle)
+        T::AddEvent("SET_TIME_MARKER_DELAY", "I:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::SetTimeMarkerDelay, this, placeholders::_1))
             (""
             "|delay[int]:The applied time marker delay is: delay*4ns+8ns");
 
-        T::AddEvent("SET_DEAD_TIME", "I:1", FTM::kIdle)
+        T::AddEvent("SET_DEAD_TIME", "I:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::SetDeadTime, this, placeholders::_1))
             (""
             "|dead_time[int]:The applied dead time is: dead_time*4ns+8ns");
 
-        T::AddEvent("ENABLE_TRIGGER", "B:1", FTM::kIdle)
+        T::AddEvent("ENABLE_TRIGGER", "B:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::Enable, this, placeholders::_1, FTM::StaticData::kTrigger))
             ("Switch on the physics trigger"
@@ -2142,5 +2141,5 @@
 
         // FIXME: Switch on/off depending on sequence
-        T::AddEvent("ENABLE_EXT1", "B:1", FTM::kIdle)
+        T::AddEvent("ENABLE_EXT1", "B:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::Enable, this, placeholders::_1, FTM::StaticData::kExt1))
             ("Switch on the triggers through the first external line"
@@ -2148,40 +2147,40 @@
 
         // FIXME: Switch on/off depending on sequence
-        T::AddEvent("ENABLE_EXT2", "B:1", FTM::kIdle)
+        T::AddEvent("ENABLE_EXT2", "B:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::Enable, this, placeholders::_1, FTM::StaticData::kExt2))
             ("Switch on the triggers through the second external line"
              "|Enable[bool]:Enable ext2 trigger (yes/no)");
 
-        T::AddEvent("ENABLE_VETO", "B:1", FTM::kIdle)
+        T::AddEvent("ENABLE_VETO", "B:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::Enable, this, placeholders::_1, FTM::StaticData::kVeto))
             ("Enable veto line"
              "|Enable[bool]:Enable veto (yes/no)");
 
-        T::AddEvent("ENABLE_CLOCK_CONDITIONER", "B:1", FTM::kIdle)
+        T::AddEvent("ENABLE_CLOCK_CONDITIONER", "B:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::Enable, this, placeholders::_1, FTM::StaticData::kClockConditioner))
             ("Enable clock conidtioner output in favor of time marker output"
              "|Enable[bool]:Enable clock conditioner (yes/no)");
 
-        T::AddEvent("ENABLE_GROUP1_LPINT", "B:1", FTM::kIdle)
+        T::AddEvent("ENABLE_GROUP1_LPINT", "B:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::EnableLP, this, placeholders::_1, FTM::StaticData::kLPint, FTM::StaticData::kGroup1))
             ("");
-        T::AddEvent("ENABLE_GROUP1_LPEXT", "B:1", FTM::kIdle)
+        T::AddEvent("ENABLE_GROUP1_LPEXT", "B:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::EnableLP, this, placeholders::_1, FTM::StaticData::kLPext, FTM::StaticData::kGroup1))
             ("");
-        T::AddEvent("ENABLE_GROUP2_LPINT", "B:1", FTM::kIdle)
+        T::AddEvent("ENABLE_GROUP2_LPINT", "B:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::EnableLP, this, placeholders::_1, FTM::StaticData::kLPint, FTM::StaticData::kGroup2))
             ("");
-        T::AddEvent("ENABLE_GROUP2_LPEXT", "B:1", FTM::kIdle)
+        T::AddEvent("ENABLE_GROUP2_LPEXT", "B:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::EnableLP, this, placeholders::_1, FTM::StaticData::kLPext, FTM::StaticData::kGroup2))
             ("");
-        T::AddEvent("SET_INTENSITY_LPINT", "S:1", FTM::kIdle)
+        T::AddEvent("SET_INTENSITY_LPINT", "S:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::SetIntensity, this, placeholders::_1, FTM::StaticData::kLPint))
             ("");
-        T::AddEvent("SET_INTENSITY_LPEXT", "S:1", FTM::kIdle)
+        T::AddEvent("SET_INTENSITY_LPEXT", "S:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::SetIntensity, this, placeholders::_1, FTM::StaticData::kLPext))
             ("");
 
 
-        T::AddEvent("SET_TRIGGER_SEQUENCE", "S:3", FTM::kIdle)
+        T::AddEvent("SET_TRIGGER_SEQUENCE", "S:3", FTM::State::kIdle)
             (bind(&StateMachineFTM::SetTriggerSeq, this, placeholders::_1))
             ("Setup the sequence of artificial triggers produced by the FTM"
@@ -2190,27 +2189,27 @@
              "|LPint[short]:number of triggers of the internal light pulser");
 
-        T::AddEvent("SET_TRIGGER_MULTIPLICITY", "S:1", FTM::kIdle)
+        T::AddEvent("SET_TRIGGER_MULTIPLICITY", "S:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::SetTriggerMultiplicity, this, placeholders::_1))
             ("Setup the Multiplicity condition for physcis triggers"
              "|N[int]:Number of requirered coincident triggers from sum-patches (1-40)");
 
-        T::AddEvent("SET_TRIGGER_WINDOW", "S:1", FTM::kIdle)
+        T::AddEvent("SET_TRIGGER_WINDOW", "S:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::SetTriggerWindow, this, placeholders::_1))
             ("");
 
-        T::AddEvent("SET_CALIBRATION_MULTIPLICITY", "S:1", FTM::kIdle)
+        T::AddEvent("SET_CALIBRATION_MULTIPLICITY", "S:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::SetCalibMultiplicity, this, placeholders::_1))
             ("Setup the Multiplicity condition for artificial (calibration) triggers"
              "|N[int]:Number of requirered coincident triggers from sum-patches (1-40)");
 
-        T::AddEvent("SET_CALIBRATION_WINDOW", "S:1", FTM::kIdle)
+        T::AddEvent("SET_CALIBRATION_WINDOW", "S:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::SetCalibWindow, this, placeholders::_1))
             ("");
 
-        T::AddEvent("SET_CLOCK_FREQUENCY", "S:1", FTM::kIdle)
+        T::AddEvent("SET_CLOCK_FREQUENCY", "S:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::SetClockFrequency, this, placeholders::_1))
             ("");
 
-        T::AddEvent("SET_CLOCK_REGISTER", "X:8", FTM::kIdle)
+        T::AddEvent("SET_CLOCK_REGISTER", "X:8", FTM::State::kIdle)
             (bind(&StateMachineFTM::SetClockRegister, this, placeholders::_1))
             ("");
@@ -2218,9 +2217,9 @@
         // A new configure will first stop the FTM this means
         // we can allow it in idle _and_ taking data
-        T::AddEvent("CONFIGURE", "C", FTM::kIdle, FTM::kConfiguring1, FTM::kConfiguring2, FTM::kConfigured, FTM::kTriggerOn)
+        T::AddEvent("CONFIGURE", "C", FTM::State::kIdle, FTM::State::kConfiguring1, FTM::State::kConfiguring2, FTM::State::kConfigured, FTM::State::kTriggerOn)
             (bind(&StateMachineFTM::ConfigureFTM, this, placeholders::_1))
             ("");
 
-        T::AddEvent("RESET_CONFIGURE", FTM::kConfiguring1, FTM::kConfiguring2, FTM::kConfigured, FTM::kConfigError1, FTM::kConfigError2)
+        T::AddEvent("RESET_CONFIGURE", FTM::State::kConfiguring1, FTM::State::kConfiguring2, FTM::State::kConfigured, FTM::State::kConfigError1, FTM::State::kConfigError2)
             (bind(&StateMachineFTM::ResetConfig, this))
             ("");
@@ -2228,10 +2227,10 @@
 
 
-        T::AddEvent("RESET_CRATE", "S:1", FTM::kIdle)
+        T::AddEvent("RESET_CRATE", "S:1", FTM::State::kIdle)
             (bind(&StateMachineFTM::ResetCrate, this, placeholders::_1))
             ("Reset one of the crates 0-3"
              "|crate[short]:Crate number to be reseted (0-3)");
 
-        T::AddEvent("RESET_CAMERA", FTM::kIdle)
+        T::AddEvent("RESET_CAMERA", FTM::State::kIdle)
             (Wrapper(bind(&ConnectionFTM::CmdResetCamera, &fFTM)))
             ("Reset all crates. The commands are sent in the order 0,1,2,3");
@@ -2239,10 +2238,10 @@
 
         // Load/save static data block
-        T::AddEvent("SAVE", "C", FTM::kIdle)
+        T::AddEvent("SAVE", "C", FTM::State::kIdle)
             (bind(&StateMachineFTM::SaveStaticData, this, placeholders::_1))
             ("Saves the static data (FTM configuration) from memory to a file"
              "|filename[string]:Filename (can include a path), .bin is automatically added");
 
-        T::AddEvent("LOAD", "C", FTM::kIdle)
+        T::AddEvent("LOAD", "C", FTM::State::kIdle)
             (bind(&StateMachineFTM::LoadStaticData, this, placeholders::_1))
             ("Loads the static data (FTM configuration) from a file into memory and sends it to the FTM"
@@ -2269,9 +2268,9 @@
 
         // Conenction commands
-        T::AddEvent("DISCONNECT", FTM::kConnected, FTM::kIdle)
+        T::AddEvent("DISCONNECT", FTM::State::kConnected, FTM::State::kIdle)
             (bind(&StateMachineFTM::Disconnect, this))
             ("disconnect from ethernet");
 
-        T::AddEvent("RECONNECT", "O", FTM::kDisconnected, FTM::kConnected, FTM::kIdle, FTM::kConfigured)
+        T::AddEvent("RECONNECT", "O", FTM::State::kDisconnected, FTM::State::kConnected, FTM::State::kIdle, FTM::State::kConfigured)
             (bind(&StateMachineFTM::Reconnect, this, placeholders::_1))
             ("(Re)connect ethernet connection to FTM, a new address can be given"
