diff --git a/silecs-communication-cpp/src/silecs-communication/interface/communication/SNAP7Connection.cpp b/silecs-communication-cpp/src/silecs-communication/interface/communication/SNAP7Connection.cpp
index 0981707550640a9da52db0ffa36b71705723b930..861afc40eb9e061b024875274e17385d9ca1a987 100644
--- a/silecs-communication-cpp/src/silecs-communication/interface/communication/SNAP7Connection.cpp
+++ b/silecs-communication-cpp/src/silecs-communication/interface/communication/SNAP7Connection.cpp
@@ -13,6 +13,7 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+#include <silecs-communication/interface/equipment/SilecsCluster.h>
 #include <silecs-communication/interface/utility/SilecsLog.h>
 #include <silecs-communication/interface/utility/StringUtilities.h>
 #include <silecs-communication/interface/communication/SilecsConnection.h>
diff --git a/silecs-communication-cpp/src/silecs-communication/interface/communication/SilecsConnection.cpp b/silecs-communication-cpp/src/silecs-communication/interface/communication/SilecsConnection.cpp
index 2ba89446a5c4d1e1c54c18f3cff4e565de920cda..b9ad8cf696aa0e52f4a12f0cff3129066da593d3 100644
--- a/silecs-communication-cpp/src/silecs-communication/interface/communication/SilecsConnection.cpp
+++ b/silecs-communication-cpp/src/silecs-communication/interface/communication/SilecsConnection.cpp
@@ -13,6 +13,7 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+#include <silecs-communication/interface/equipment/SilecsCluster.h>
 #include <silecs-communication/interface/utility/SilecsLog.h>
 #include <silecs-communication/interface/communication/SilecsConnection.h>
 #include <silecs-communication/interface/equipment/SilecsPLC.h>
diff --git a/silecs-communication-cpp/src/silecs-communication/interface/communication/SilecsConnection.h b/silecs-communication-cpp/src/silecs-communication/interface/communication/SilecsConnection.h
index b3e7687a86f3e2e95b6f5e0bfd6574b9001e4f46..d168f7c1c98b8ad25047930d5951022a0b0449f6 100644
--- a/silecs-communication-cpp/src/silecs-communication/interface/communication/SilecsConnection.h
+++ b/silecs-communication-cpp/src/silecs-communication/interface/communication/SilecsConnection.h
@@ -16,7 +16,7 @@
 #ifndef _SILECS_CONNECTION_H_
 #define _SILECS_CONNECTION_H_
 
-#include <silecs-communication/interface/core/SilecsService.h>
+#include <silecs-communication/interface/equipment/PLCRegister.h>
 #include <silecs-communication/interface/utility/Mutex.h>
 #include <silecs-communication/interface/utility/TimeStamp.h>
 
diff --git a/silecs-communication-cpp/src/silecs-communication/interface/core/CNVSendAction.cpp b/silecs-communication-cpp/src/silecs-communication/interface/core/CNVSendAction.cpp
index 8c834e8bdb33d5c6c60c423709d39dbfa6011923..3e22bc39e9ce70bdab9947ce9ca3967be380d4bd 100644
--- a/silecs-communication-cpp/src/silecs-communication/interface/core/CNVSendAction.cpp
+++ b/silecs-communication-cpp/src/silecs-communication/interface/core/CNVSendAction.cpp
@@ -14,7 +14,7 @@
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #ifdef NI_SUPPORT_ENABLED
-#include <silecs-communication/interface/core/SilecsService.h>
+#include <silecs-communication/interface/equipment/SilecsCluster.h>
 #include <silecs-communication/interface/core/SilecsAction.h>
 #include <silecs-communication/interface/core/PLCAction.h>
 #include <silecs-communication/interface/communication/SilecsConnection.h>
diff --git a/silecs-communication-cpp/src/silecs-communication/interface/core/SilecsService.cpp b/silecs-communication-cpp/src/silecs-communication/interface/core/SilecsService.cpp
index f045ee9699eac90e77350bf2657a2b926f67b0f4..6256e287c15f9e45e57a42746d589aad6aa405ef 100644
--- a/silecs-communication-cpp/src/silecs-communication/interface/core/SilecsService.cpp
+++ b/silecs-communication-cpp/src/silecs-communication/interface/core/SilecsService.cpp
@@ -14,6 +14,7 @@
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #include <silecs-communication/interface/equipment/SilecsCluster.h>
+#include <silecs-communication/interface/equipment/SilecsPLC.h>
 #include <silecs-communication/interface/utility/SilecsLog.h>
 #include <silecs-communication/interface/utility/XMLParser.h>
 #include <silecs-communication/interface/utility/StringUtilities.h>
diff --git a/silecs-communication-cpp/src/silecs-communication/interface/core/SilecsService.h b/silecs-communication-cpp/src/silecs-communication/interface/core/SilecsService.h
index 71b4d680561b98de23edb3b5532e8871a8c2ff25..b2efc124e40ed391be25d266a3ca7bd14e67639b 100644
--- a/silecs-communication-cpp/src/silecs-communication/interface/core/SilecsService.h
+++ b/silecs-communication-cpp/src/silecs-communication/interface/core/SilecsService.h
@@ -53,16 +53,15 @@ namespace Silecs
 	} SynchroMode;
 }
 
-#include <silecs-communication/interface/equipment/CNVRegister.h>
 #include <silecs-communication/interface/equipment/SilecsCluster.h>
 #include <silecs-communication/interface/equipment/SilecsPLC.h>
 #include <silecs-communication/interface/equipment/SilecsDevice.h>
 #include <silecs-communication/interface/equipment/SilecsRegister.h>
-#include <silecs-communication/interface/equipment/PLCRegister.h>
-#include <silecs-communication/interface/utility/SilecsException.h>
 
 namespace Silecs
 {
+    class Cluster;
+
 	/// @cond
 	typedef std::map<std::string, Cluster*> clusterMapType;
 	/// @endcond
diff --git a/silecs-communication-cpp/src/silecs-communication/interface/equipment/CNVBlock.cpp b/silecs-communication-cpp/src/silecs-communication/interface/equipment/CNVBlock.cpp
index 8bb3f2ac3fe9db3ecf68c93e2ad560f57ca5a1c1..d87120f3b163f79d77e22b9b765414d9bc1755b2 100644
--- a/silecs-communication-cpp/src/silecs-communication/interface/equipment/CNVBlock.cpp
+++ b/silecs-communication-cpp/src/silecs-communication/interface/equipment/CNVBlock.cpp
@@ -16,7 +16,8 @@
 #ifdef NI_SUPPORT_ENABLED
 #include "CNVBlock.h"
 
-#include <silecs-communication/interface/core/SilecsService.h>
+#include <silecs-communication/interface/equipment/SilecsCluster.h>
+#include <silecs-communication/interface/equipment/SilecsDevice.h>
 #include <silecs-communication/interface/utility/Thread.h>
 #include <silecs-communication/interface/utility/XMLParser.h>
 #include <silecs-communication/interface/equipment/SilecsPLC.h>
diff --git a/silecs-communication-cpp/src/silecs-communication/interface/equipment/CNVRegister.h b/silecs-communication-cpp/src/silecs-communication/interface/equipment/CNVRegister.h
index d17a54d87811e0eab5ec95a06d9075b16ce2441b..c1ebb83d69adb25786f82c00491aed45f3a20fec 100644
--- a/silecs-communication-cpp/src/silecs-communication/interface/equipment/CNVRegister.h
+++ b/silecs-communication-cpp/src/silecs-communication/interface/equipment/CNVRegister.h
@@ -17,7 +17,6 @@
 #ifndef _SILECS_CNV_REGISTER_H_
 #define _SILECS_CNV_REGISTER_H_
 
-#include <silecs-communication/interface/core/SilecsService.h>
 #include <silecs-communication/interface/utility/XMLParser.h>
 #include <silecs-communication/interface/equipment/SilecsPLC.h>
 #include <silecs-communication/interface/equipment/SilecsDevice.h>
diff --git a/silecs-communication-cpp/src/silecs-communication/interface/equipment/SilecsCluster.cpp b/silecs-communication-cpp/src/silecs-communication/interface/equipment/SilecsCluster.cpp
index fab5864b7254f278c40e4665ef9d4a623a011ad5..dd6afac2902e43144b7ae75ff125706ea5654291 100644
--- a/silecs-communication-cpp/src/silecs-communication/interface/equipment/SilecsCluster.cpp
+++ b/silecs-communication-cpp/src/silecs-communication/interface/equipment/SilecsCluster.cpp
@@ -19,6 +19,7 @@
 #include <silecs-communication/interface/equipment/SilecsBlock.h>
 #include <silecs-communication/interface/utility/SilecsException.h>
 #include <silecs-communication/interface/utility/SilecsLog.h>
+#include <silecs-communication/interface/utility/StringUtilities.h>
 #include <arpa/inet.h>
 #include <netdb.h>
 
diff --git a/silecs-communication-cpp/src/silecs-communication/interface/equipment/SilecsCluster.h b/silecs-communication-cpp/src/silecs-communication/interface/equipment/SilecsCluster.h
index d88f998b65ea5da57568e75e67c42378595d6b1f..866fc47112b404f6a9d376cb87f6c3f3e668b6b7 100644
--- a/silecs-communication-cpp/src/silecs-communication/interface/equipment/SilecsCluster.h
+++ b/silecs-communication-cpp/src/silecs-communication/interface/equipment/SilecsCluster.h
@@ -20,6 +20,7 @@
 #include <silecs-communication/interface/utility/Thread.h>
 #include <map>
 #include <vector>
+#include <string>
 
 namespace Silecs
 {
diff --git a/silecs-communication-cpp/src/silecs-communication/interface/equipment/SilecsPLC.cpp b/silecs-communication-cpp/src/silecs-communication/interface/equipment/SilecsPLC.cpp
index 666340075bbe35b58b6eab3344c6ff1f75ccf21a..da7ad78ae5506bda8ef70d1b7a1165bd70c2f781 100644
--- a/silecs-communication-cpp/src/silecs-communication/interface/equipment/SilecsPLC.cpp
+++ b/silecs-communication-cpp/src/silecs-communication/interface/equipment/SilecsPLC.cpp
@@ -449,7 +449,9 @@ namespace Silecs
                     case S7Protocol:
                         theConn = new SNAP7Connection(this); break;
                     case MBProtocol:
+#ifdef MODBUS_SUPPORT_ENABLED
                         theConn = new MBConnection(this); break;
+#endif
                     case CNVProtocol:
 #ifdef NI_SUPPORT_ENABLED
                     	theConn = new CNVConnection(this);break;
diff --git a/silecs-communication-cpp/src/silecs-communication/interface/equipment/SilecsPLC.h b/silecs-communication-cpp/src/silecs-communication/interface/equipment/SilecsPLC.h
index 85adebbd9a3bb25834396d67b6ab717356694d21..a89e46ea38a40e73216400804a9e19a0283920fc 100644
--- a/silecs-communication-cpp/src/silecs-communication/interface/equipment/SilecsPLC.h
+++ b/silecs-communication-cpp/src/silecs-communication/interface/equipment/SilecsPLC.h
@@ -16,8 +16,8 @@
 #ifndef _SILECS_PLC_H_
 #define _SILECS_PLC_H_
 
-#include <silecs-communication/interface/core/Diagnostic.h>
 #include <silecs-communication/interface/core/SilecsService.h>
+#include <silecs-communication/interface/core/Diagnostic.h>
 #include <silecs-communication/interface/utility/Thread.h>
 
 #include <stdint.h>
diff --git a/silecs-communication-cpp/src/silecs-communication/interface/equipment/SilecsRegister.h b/silecs-communication-cpp/src/silecs-communication/interface/equipment/SilecsRegister.h
index a034dceab50b0752c9cc6c152116a0233c3392bd..c730b4df60602a97fc1d2cd63451bfaa9eeee7e3 100644
--- a/silecs-communication-cpp/src/silecs-communication/interface/equipment/SilecsRegister.h
+++ b/silecs-communication-cpp/src/silecs-communication/interface/equipment/SilecsRegister.h
@@ -18,6 +18,7 @@
 
 #include <stdint.h>
 #include <boost/shared_ptr.hpp>
+#include <string>
 
 namespace Silecs
 {
diff --git a/silecs-communication-cpp/src/silecs-communication/wrapper/Design.cpp b/silecs-communication-cpp/src/silecs-communication/wrapper/Design.cpp
index 415b346f1d622f645e5387fe07fa5dccaf9db43c..f70bd3869988bbf1289c2aef85daae22b0ba8be2 100644
--- a/silecs-communication-cpp/src/silecs-communication/wrapper/Design.cpp
+++ b/silecs-communication-cpp/src/silecs-communication/wrapper/Design.cpp
@@ -13,6 +13,7 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+#include <silecs-communication/interface/equipment/SilecsPLC.h>
 #include <silecs-communication/wrapper/DeployUnit.h>
 #include <silecs-communication/wrapper/Design.h>