diff --git a/silecs-communication-cpp/src/silecs-communication/interface/communication/CNVConnection.cpp b/silecs-communication-cpp/src/silecs-communication/interface/communication/CNVConnection.cpp
index 0623f576898847e299d3f62dc98ae3e1bc9772cf..e5c2f5aca072d3c7f2493607318236cb79bbfdf8 100644
--- a/silecs-communication-cpp/src/silecs-communication/interface/communication/CNVConnection.cpp
+++ b/silecs-communication-cpp/src/silecs-communication/interface/communication/CNVConnection.cpp
@@ -97,22 +97,22 @@ namespace Silecs
 		return errorCode;
 	}
 
-    int CNVConnection::readMemory(PLC* thePLC, unsigned long address, unsigned long offset, unsigned long size, unsigned char* pBuffer)
+    int CNVConnection::readMemory(PLC* thePLC, long address, unsigned long offset, unsigned long size, unsigned char* pBuffer)
     {
     return readData(thePLC, address, offset, size, pBuffer);
     }
-    int CNVConnection::writeMemory(PLC* thePLC, unsigned long address, unsigned long offset, unsigned long size, unsigned char* pBuffer)
+    int CNVConnection::writeMemory(PLC* thePLC, long address, unsigned long offset, unsigned long size, unsigned char* pBuffer)
     {
     return writeData(thePLC, address, offset, size, pBuffer);
     }
-    int CNVConnection::readIO(PLC* thePLC, unsigned long address, unsigned long offset, unsigned long size, unsigned char* pBuffer)
+    int CNVConnection::readIO(PLC* thePLC, long address, unsigned long offset, unsigned long size, unsigned char* pBuffer)
     {
 
       LOG(ERROR) << "Read IO not supported for CNV";
       return 0;
     }
 
-    int CNVConnection::writeIO(PLC* thePLC, unsigned long address, unsigned long offset, unsigned long size, unsigned char* pBuffer)
+    int CNVConnection::writeIO(PLC* thePLC, long address, unsigned long offset, unsigned long size, unsigned char* pBuffer)
     {
       LOG(ERROR) << "Write IO not supported for CNV";
       return 0;
diff --git a/silecs-communication-cpp/src/silecs-communication/interface/communication/CNVConnection.h b/silecs-communication-cpp/src/silecs-communication/interface/communication/CNVConnection.h
index 98a30c4f847093e00bc424bd5e67d85b4075ee39..4e99e0b7b286e8cd094ec4a679fe52e2712c0cb2 100644
--- a/silecs-communication-cpp/src/silecs-communication/interface/communication/CNVConnection.h
+++ b/silecs-communication-cpp/src/silecs-communication/interface/communication/CNVConnection.h
@@ -67,21 +67,21 @@ namespace Silecs
 
 		// not implemented. here because of virtual in super class
 		// TODO: review in order to get read of it
-		int readData(PLC* thePLC, unsigned long address,
+		int readData(PLC* thePLC, long address,
 							 unsigned long offset,
 							 unsigned long size,
 							 unsigned char* buffer){ return -1;};
 
 		// not implemented. here because of virtual in super class
 		// TODO: review in order to get read of it
-		int writeData(PLC* thePLC, unsigned long address,
+		int writeData(PLC* thePLC, long address,
 							 unsigned long offset,
 							 unsigned long size,
 							 unsigned char* buffer){return -1;};
-        int readMemory(PLC* thePLC, unsigned long address, unsigned long offset, unsigned long size, unsigned char* pBuffer);
-        int writeMemory(PLC* thePLC, unsigned long address, unsigned long offset, unsigned long size, unsigned char* pBuffer);
-        int readIO(PLC* thePLC, unsigned long address, unsigned long offset, unsigned long size, unsigned char* pBuffer);
-        int writeIO(PLC* thePLC, unsigned long address, unsigned long offset, unsigned long size, unsigned char* pBuffer);
+        int readMemory(PLC* thePLC, long address, unsigned long offset, unsigned long size, unsigned char* pBuffer);
+        int writeMemory(PLC* thePLC, long address, unsigned long offset, unsigned long size, unsigned char* pBuffer);
+        int readIO(PLC* thePLC, long address, unsigned long offset, unsigned long size, unsigned char* pBuffer);
+        int writeIO(PLC* thePLC, long address, unsigned long offset, unsigned long size, unsigned char* pBuffer);
 
 	private:
 		// Subscriber
diff --git a/silecs-communication-cpp/src/silecs-communication/interface/communication/MBConnection.cpp b/silecs-communication-cpp/src/silecs-communication/interface/communication/MBConnection.cpp
index 4c17eff142fdf7cacd047dea861312a83f7c6ad7..830200ad72024843caf3a4cd31bf2efa1ede1e88 100644
--- a/silecs-communication-cpp/src/silecs-communication/interface/communication/MBConnection.cpp
+++ b/silecs-communication-cpp/src/silecs-communication/interface/communication/MBConnection.cpp
@@ -141,7 +141,7 @@ namespace Silecs
   }
 
 
-  int MBConnection::readData(PLC* thePLC, unsigned long address, unsigned long offset, unsigned long size, unsigned char* pBuffer)
+  int MBConnection::readData(PLC* thePLC, long address, unsigned long offset, unsigned long size, unsigned char* pBuffer)
   {
     int rc = 0;
     int error = 0;
@@ -178,7 +178,7 @@ namespace Silecs
   }
 
 
-  int MBConnection::writeData(PLC* thePLC, unsigned long address, unsigned long offset, unsigned long size, unsigned char* pBuffer)
+  int MBConnection::writeData(PLC* thePLC, long address, unsigned long offset, unsigned long size, unsigned char* pBuffer)
   {
     int rc = 0;
     int error = 0;
@@ -214,25 +214,25 @@ namespace Silecs
   }
 
 
-  int MBConnection::readMemory(PLC* thePLC, unsigned long address, unsigned long offset, unsigned long size, unsigned char* pBuffer)
+  int MBConnection::readMemory(PLC* thePLC, long address, unsigned long offset, unsigned long size, unsigned char* pBuffer)
   {
     return readData(thePLC, address, offset, size, pBuffer);
   }
 
 
-  int MBConnection::writeMemory(PLC* thePLC, unsigned long address, unsigned long offset, unsigned long size, unsigned char* pBuffer)
+  int MBConnection::writeMemory(PLC* thePLC, long address, unsigned long offset, unsigned long size, unsigned char* pBuffer)
   {
     return writeData(thePLC, address, offset, size, pBuffer);
   }
 
 
-  int MBConnection::readIO(PLC* thePLC, unsigned long address, unsigned long offset, unsigned long size, unsigned char* pBuffer)
+  int MBConnection::readIO(PLC* thePLC, long address, unsigned long offset, unsigned long size, unsigned char* pBuffer)
   {
     return readData(thePLC, address, offset, size, pBuffer);
   }
 
 
-  int MBConnection::writeIO(PLC* thePLC, unsigned long address, unsigned long offset, unsigned long size, unsigned char* pBuffer)
+  int MBConnection::writeIO(PLC* thePLC, long address, unsigned long offset, unsigned long size, unsigned char* pBuffer)
   {
     return writeData(thePLC, address, offset, size, pBuffer);
   }
diff --git a/silecs-communication-cpp/src/silecs-communication/interface/communication/MBConnection.h b/silecs-communication-cpp/src/silecs-communication/interface/communication/MBConnection.h
index a9263d42d79712f106b0b4e0891cb4d2f4f12384..98ef27e373ff88c7ba7130f38751fd1736541577 100644
--- a/silecs-communication-cpp/src/silecs-communication/interface/communication/MBConnection.h
+++ b/silecs-communication-cpp/src/silecs-communication/interface/communication/MBConnection.h
@@ -35,18 +35,18 @@ namespace Silecs
         MBConnection(PLC* thePLC);
         virtual ~MBConnection();
 
-        int readMemory(PLC* thePLC, unsigned long address, unsigned long offset, unsigned long size, unsigned char* pBuffer);
-        int writeMemory(PLC* thePLC, unsigned long address, unsigned long offset, unsigned long size, unsigned char* pBuffer);
-        int readIO(PLC* thePLC, unsigned long address, unsigned long offset, unsigned long size, unsigned char* pBuffer);
-        int writeIO(PLC* thePLC, unsigned long address, unsigned long offset, unsigned long size, unsigned char* pBuffer);
+        int readMemory(PLC* thePLC, long address, unsigned long offset, unsigned long size, unsigned char* pBuffer);
+        int writeMemory(PLC* thePLC, long address, unsigned long offset, unsigned long size, unsigned char* pBuffer);
+        int readIO(PLC* thePLC, long address, unsigned long offset, unsigned long size, unsigned char* pBuffer);
+        int writeIO(PLC* thePLC, long address, unsigned long offset, unsigned long size, unsigned char* pBuffer);
 
     private:
         modbus_t* readCtx_;
         modbus_t* writeCtx_;
         bool open(PLC* thePLC);
         bool close(PLC* thePLC);
-        int readData(PLC* thePLC, unsigned long address, unsigned long offset, unsigned long size, unsigned char* pBuffer);
-        int writeData(PLC* thePLC, unsigned long address, unsigned long offset, unsigned long size, unsigned char* pBuffer);
+        int readData(PLC* thePLC, long address, unsigned long offset, unsigned long size, unsigned char* pBuffer);
+        int writeData(PLC* thePLC, long address, unsigned long offset, unsigned long size, unsigned char* pBuffer);
         int mbWriteFrames(modbus_t* ctx, uint16_t dataAddr, uint16_t dataSize, uint8_t* dataBuffer);
         int mbReadFrames(modbus_t* ctx, uint16_t dataAddr, uint16_t dataSize, uint8_t* dataBuffer);
         bool checkError(PLC* thePLC, int err, bool retry);
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 2de7fd4156f216322d7a04f739c5c8189bf26535..b31c9fab12ebac9b3ade105c67c2ebf8ea1796be 100644
--- a/silecs-communication-cpp/src/silecs-communication/interface/communication/SNAP7Connection.cpp
+++ b/silecs-communication-cpp/src/silecs-communication/interface/communication/SNAP7Connection.cpp
@@ -199,7 +199,7 @@ bool SNAP7Connection::isRunning(PLC* thePLC)
             throw SilecsException(__FILE__, __LINE__, UNKNOWN_ERROR, std::string("PLC Status is: UNKNOWN"));
     }
 }
-int SNAP7Connection::readMemory(PLC* thePLC, unsigned long DBn, unsigned long offset, unsigned long size, unsigned char* pBuffer)
+int SNAP7Connection::readMemory(PLC* thePLC, long DBn, unsigned long offset, unsigned long size, unsigned char* pBuffer)
 {
       int err = 0;
   //(re)connect the PLC if needed and (re)synchronize the retentive registers
@@ -215,7 +215,7 @@ int SNAP7Connection::readMemory(PLC* thePLC, unsigned long DBn, unsigned long of
   }
       return err;
 }
-int SNAP7Connection::writeMemory(PLC* thePLC, unsigned long DBn, unsigned long offset, unsigned long size, unsigned char* pBuffer)
+int SNAP7Connection::writeMemory(PLC* thePLC, long DBn, unsigned long offset, unsigned long size, unsigned char* pBuffer)
 {
       int err = 0;
       //(re)connect the PLC if needed and (re)synchronize the retentive registers
@@ -232,7 +232,7 @@ int SNAP7Connection::writeMemory(PLC* thePLC, unsigned long DBn, unsigned long o
       return err;
 }
 
-int SNAP7Connection::readIO(PLC* thePLC, unsigned long address, unsigned long offset, unsigned long size, unsigned char* pBuffer)
+int SNAP7Connection::readIO(PLC* thePLC, long address, unsigned long offset, unsigned long size, unsigned char* pBuffer)
 {
       int err = 0;
   //(re)connect the PLC if needed and (re)synchronize the retentive registers
@@ -250,7 +250,7 @@ int SNAP7Connection::readIO(PLC* thePLC, unsigned long address, unsigned long of
       return err;
 }
 
-int SNAP7Connection::writeIO(PLC* thePLC, unsigned long address, unsigned long offset, unsigned long size, unsigned char* pBuffer)
+int SNAP7Connection::writeIO(PLC* thePLC, long address, unsigned long offset, unsigned long size, unsigned char* pBuffer)
 {
       int err = 0;
       //(re)connect the PLC if needed and (re)synchronize the retentive registers
diff --git a/silecs-communication-cpp/src/silecs-communication/interface/communication/SNAP7Connection.h b/silecs-communication-cpp/src/silecs-communication/interface/communication/SNAP7Connection.h
index 030a25f2cd263030d0851eb1a6e6189e53d2316f..aab6a06ca46bbab66a1a3874c7dd898a811f5de3 100644
--- a/silecs-communication-cpp/src/silecs-communication/interface/communication/SNAP7Connection.h
+++ b/silecs-communication-cpp/src/silecs-communication/interface/communication/SNAP7Connection.h
@@ -41,12 +41,12 @@ namespace Silecs
 
         bool isRunning(PLC* thePLC);
 
- 		int readData(PLC* thePLC, unsigned long DBn, unsigned long offset, unsigned long size, unsigned char* pBuffer);
- 		int writeData(PLC* thePLC, unsigned long DBn, unsigned long offset, unsigned long size, unsigned char* pBuffer);
-        int readMemory(PLC* thePLC, unsigned long DBn, unsigned long offset, unsigned long size, unsigned char* pBuffer);
-        int writeMemory(PLC* thePLC, unsigned long DBn, unsigned long offset, unsigned long size, unsigned char* pBuffer);
-        int readIO(PLC* thePLC, unsigned long address, unsigned long offset, unsigned long size, unsigned char* pBuffer);
-        int writeIO(PLC* thePLC, unsigned long address, unsigned long offset, unsigned long size, unsigned char* pBuffer);
+ 		int readData(PLC* thePLC, long DBn, unsigned long offset, unsigned long size, unsigned char* pBuffer);
+ 		int writeData(PLC* thePLC, long DBn, unsigned long offset, unsigned long size, unsigned char* pBuffer);
+        int readMemory(PLC* thePLC, long DBn, unsigned long offset, unsigned long size, unsigned char* pBuffer);
+        int writeMemory(PLC* thePLC, long DBn, unsigned long offset, unsigned long size, unsigned char* pBuffer);
+        int readIO(PLC* thePLC, long address, unsigned long offset, unsigned long size, unsigned char* pBuffer);
+        int writeIO(PLC* thePLC, long address, unsigned long offset, unsigned long size, unsigned char* pBuffer);
 
  		//Extension Silecs methods
  		int coldRestart(PLC* thePLC);
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 4c5b9a74b9a4e6ed26b33ca0f9db8119baae1d78..784c1a85a5fb9fa3cb3af5d4768b336443ed715d 100644
--- a/silecs-communication-cpp/src/silecs-communication/interface/communication/SilecsConnection.h
+++ b/silecs-communication-cpp/src/silecs-communication/interface/communication/SilecsConnection.h
@@ -43,25 +43,25 @@ namespace Silecs
 		virtual ~Connection();
 
         virtual int readMemory(PLC* thePLC,
-                             unsigned long address,
+                             long address,
                          unsigned long offset,
                          unsigned long size,
                          unsigned char* buffer) = 0;
 
         virtual int writeMemory(PLC* thePLC,
-                          unsigned long address,
+                          long address,
                           unsigned long offset,
                           unsigned long size,
                           unsigned char* buffer) = 0;
 
         virtual int readIO(PLC* thePLC,
-                           unsigned long address,
+                           long address,
                            unsigned long offset,
                            unsigned long size,
                            unsigned char* buffer) = 0;
 
         virtual int writeIO(PLC* thePLC,
-                          unsigned long address,
+                          long address,
                           unsigned long offset,
                           unsigned long size,
                           unsigned char* buffer) = 0;