diff --git a/Makefile.inc b/Makefile.inc
index f79eb329d96fc72b2fedba590cd79df4eb39338f..55c3b4b93d8cf17c5264810b9cc00096198e20de 100644
--- a/Makefile.inc
+++ b/Makefile.inc
@@ -27,15 +27,16 @@
 #If SPB is directly exported as an environment variable it will also be evaluated as part of the subprojects SPB, thus
 #potentially overriding its value
 #Main target subprojects. May be overridden by shell definition.
-SPBM?=Source/Components/DataSources.x \
-	Source/Components/GAMs.x \
-	Source/Components/Interfaces.x
+SPBM?=Source/Components/Interfaces.x \
+        Source/Components/DataSources.x \
+        Source/Components/GAMs.x
+
 
 #Testing of the main target subprojects. May be overridden by shell definition.
-SPBMT?=Test/Components/DataSources.x \
+SPBMT?=Test/Components/Interfaces.x \
+    Test/Components/DataSources.x \
     Test/Components/GAMs.x \
-    Test/Components/Interfaces.x \
-	Test/GTest.x
+    Test/GTest.x
 
 #This really has to be defined locally.
 SUBPROJMAIN=$(SPBM:%.x=%.spb)
diff --git a/Source/Components/DataSources/OPCUADataSource/Makefile.gcc b/Source/Components/DataSources/OPCUADataSource/Makefile.gcc
index f6b5b932b18d80aea4bf0224a0e8154745b6699b..77843901ee4327b7df99818b383d62de37c8ce11 100644
--- a/Source/Components/DataSources/OPCUADataSource/Makefile.gcc
+++ b/Source/Components/DataSources/OPCUADataSource/Makefile.gcc
@@ -24,3 +24,5 @@
 
 
 include Makefile.inc
+
+LIBRARIES += -L$(ROOT_DIR)/Build/x86-linux/Components/Interfaces/OPCUA -lOPCUA
\ No newline at end of file
diff --git a/Source/Components/DataSources/OPCUADataSource/Makefile.inc b/Source/Components/DataSources/OPCUADataSource/Makefile.inc
index 092ecc1acc1b43af54ad9c5462d8d26a52f1ef81..4caea182dd86cad9ec7f95691be5d6d924d92684 100644
--- a/Source/Components/DataSources/OPCUADataSource/Makefile.inc
+++ b/Source/Components/DataSources/OPCUADataSource/Makefile.inc
@@ -22,7 +22,7 @@
 #
 #############################################################
 
-OBJSX=OPCUAClientI.x OPCUAClientRead.x OPCUAClientWrite.x OPCUAClientMethod.x OPCUADSInput.x OPCUADSOutput.x
+OBJSX=OPCUADSInput.x OPCUADSOutput.x
 
 PACKAGE=Components/DataSources
 
@@ -47,6 +47,7 @@ INCLUDES += -I$(MARTe2_DIR)/Source/Core/Scheduler/L4Messages
 INCLUDES += -I$(MARTe2_DIR)/Source/Core/Scheduler/L5GAMs
 INCLUDES += -I$(MARTe2_DIR)/Source/Core/FileSystem/L1Portability
 INCLUDES += -I$(MARTe2_DIR)/Source/Core/FileSystem/L3Streams
+INCLUDES += -I$(ROOT_DIR)/Source/Components/Interfaces/OPCUA
 INCLUDES += -I$(OPEN62541_INCLUDE)/
 
 LIBRARIES_STATIC += $(OPEN62541_LIB)/libopen62541$(LIBEXT)
diff --git a/Source/Components/DataSources/OPCUADataSource/OPCUADSInput.cpp b/Source/Components/DataSources/OPCUADataSource/OPCUADSInput.cpp
index a7a99cfcf0059f3b29c08c9f06151039fbbd07ef..b7f84d01e8a2bd9f92d8c99838ae956073a6528b 100644
--- a/Source/Components/DataSources/OPCUADataSource/OPCUADSInput.cpp
+++ b/Source/Components/DataSources/OPCUADataSource/OPCUADSInput.cpp
@@ -592,7 +592,7 @@ void OPCUADSInput::GetStructureDimensions(const Introspection *const intro,
     }
 }
 
-bool OPCUADSInput::GetStructure(const Introspection * const intro,
+bool OPCUADSInput::GetStructure(const Introspection *const intro,
                                 uint32 *&entryArrayElements,
                                 TypeDescriptor *&entryTypes,
                                 uint32 *&entryNumberOfMembers,
diff --git a/Source/Components/Interfaces/OPCUA/Makefile.gcc b/Source/Components/Interfaces/OPCUA/Makefile.gcc
index 2765f1b4764274e212d1fbeed58ebc740f2366da..d1a8191f209d9c2da30687e5cf095f803e53d5e8 100644
--- a/Source/Components/Interfaces/OPCUA/Makefile.gcc
+++ b/Source/Components/Interfaces/OPCUA/Makefile.gcc
@@ -24,3 +24,4 @@
 
 include Makefile.inc
 
+LIBRARIES_STATIC += $(OPEN62541_LIB)/libopen62541$(LIBEXT)
diff --git a/Source/Components/Interfaces/OPCUA/Makefile.inc b/Source/Components/Interfaces/OPCUA/Makefile.inc
index 019ac60adffff5c0cfd4aa28511f95106054dcd4..29d50ef5f076fb67762b1aee8cfcb8b07930ca38 100644
--- a/Source/Components/Interfaces/OPCUA/Makefile.inc
+++ b/Source/Components/Interfaces/OPCUA/Makefile.inc
@@ -22,7 +22,11 @@
 #
 #############################################################
 
-OBJSX=OPCUANode.x \
+OBJSX=OPCUAClientI.x \
+    OPCUAClientRead.x \
+    OPCUAClientWrite.x \
+    OPCUAClientMethod.x \
+    OPCUANode.x \
     OPCUAObject.x \
     OPCUAReferenceContainer.x \
     OPCUAServer.x \
@@ -51,7 +55,7 @@ INCLUDES += -I$(MARTe2_DIR)/Source/Core/Scheduler/L5GAMs
 INCLUDES += -I$(OPEN62541_INCLUDE)/
 INCLUDES += -I$(ROOT_DIR)/Source/Components/DataSources/OPCUADataSource
 
-LIBRARIES += $(OPEN62541_LIB)/libopen62541$(LIBEXT)
+LIBRARIES_STATIC += $(OPEN62541_LIB)/libopen62541$(LIBEXT)
 
 all: $(OBJS)    \
     $(BUILD_DIR)/OPCUA$(LIBEXT) \
diff --git a/Source/Components/DataSources/OPCUADataSource/OPCUAClientI.cpp b/Source/Components/Interfaces/OPCUA/OPCUAClientI.cpp
similarity index 100%
rename from Source/Components/DataSources/OPCUADataSource/OPCUAClientI.cpp
rename to Source/Components/Interfaces/OPCUA/OPCUAClientI.cpp
diff --git a/Source/Components/DataSources/OPCUADataSource/OPCUAClientI.h b/Source/Components/Interfaces/OPCUA/OPCUAClientI.h
similarity index 100%
rename from Source/Components/DataSources/OPCUADataSource/OPCUAClientI.h
rename to Source/Components/Interfaces/OPCUA/OPCUAClientI.h
diff --git a/Source/Components/DataSources/OPCUADataSource/OPCUAClientMethod.cpp b/Source/Components/Interfaces/OPCUA/OPCUAClientMethod.cpp
similarity index 100%
rename from Source/Components/DataSources/OPCUADataSource/OPCUAClientMethod.cpp
rename to Source/Components/Interfaces/OPCUA/OPCUAClientMethod.cpp
diff --git a/Source/Components/DataSources/OPCUADataSource/OPCUAClientMethod.h b/Source/Components/Interfaces/OPCUA/OPCUAClientMethod.h
similarity index 100%
rename from Source/Components/DataSources/OPCUADataSource/OPCUAClientMethod.h
rename to Source/Components/Interfaces/OPCUA/OPCUAClientMethod.h
diff --git a/Source/Components/DataSources/OPCUADataSource/OPCUAClientRead.cpp b/Source/Components/Interfaces/OPCUA/OPCUAClientRead.cpp
similarity index 100%
rename from Source/Components/DataSources/OPCUADataSource/OPCUAClientRead.cpp
rename to Source/Components/Interfaces/OPCUA/OPCUAClientRead.cpp
diff --git a/Source/Components/DataSources/OPCUADataSource/OPCUAClientRead.h b/Source/Components/Interfaces/OPCUA/OPCUAClientRead.h
similarity index 100%
rename from Source/Components/DataSources/OPCUADataSource/OPCUAClientRead.h
rename to Source/Components/Interfaces/OPCUA/OPCUAClientRead.h
diff --git a/Source/Components/DataSources/OPCUADataSource/OPCUAClientWrite.cpp b/Source/Components/Interfaces/OPCUA/OPCUAClientWrite.cpp
similarity index 100%
rename from Source/Components/DataSources/OPCUADataSource/OPCUAClientWrite.cpp
rename to Source/Components/Interfaces/OPCUA/OPCUAClientWrite.cpp
diff --git a/Source/Components/DataSources/OPCUADataSource/OPCUAClientWrite.h b/Source/Components/Interfaces/OPCUA/OPCUAClientWrite.h
similarity index 100%
rename from Source/Components/DataSources/OPCUADataSource/OPCUAClientWrite.h
rename to Source/Components/Interfaces/OPCUA/OPCUAClientWrite.h
diff --git a/Test/Components/DataSources/OPCUADataSource/Makefile.gcc b/Test/Components/DataSources/OPCUADataSource/Makefile.gcc
index 229f2f197491a310d245e966b7e669369e1df13a..4d332c5a765ef1946731c4113a7a13cce58bd429 100644
--- a/Test/Components/DataSources/OPCUADataSource/Makefile.gcc
+++ b/Test/Components/DataSources/OPCUADataSource/Makefile.gcc
@@ -23,10 +23,6 @@
 #############################################################
 
 OBJSX = OPCUADSOutputGTest.x \
-	OPCUADSInputGTest.x \
-    OPCUAClientIGTest.x \
-    OPCUAClientReadGTest.x \
-    OPCUAClientWriteGTest.x \
-    OPCUAClientMethodGTest.x
+	OPCUADSInputGTest.x 
 
 include Makefile.inc
diff --git a/Test/Components/DataSources/OPCUADataSource/Makefile.inc b/Test/Components/DataSources/OPCUADataSource/Makefile.inc
index 24357a40df764a7041a4be1b1a7bd4a372acbc71..9a1b4c65c88b184b37b137321062eb7f5d19657f 100644
--- a/Test/Components/DataSources/OPCUADataSource/Makefile.inc
+++ b/Test/Components/DataSources/OPCUADataSource/Makefile.inc
@@ -23,11 +23,8 @@
 #############################################################
 
 OBJSX +=  OPCUADSOutputTest.x \
-    OPCUADSInputTest.x \
-    OPCUAClientITest.x \
-    OPCUAClientReadTest.x \
-    OPCUAClientWriteTest.x \
-    OPCUAClientMethodTest.x
+    OPCUADSInputTest.x
+
 
 PACKAGE=Components/DataSources
 
diff --git a/Test/Components/Interfaces/OPCUA/Makefile.gcc b/Test/Components/Interfaces/OPCUA/Makefile.gcc
index 961841f77886cf2563cdf51d67155b59b1be6947..d0c0103443aed0ceff61ee9ed9516472482e6a56 100644
--- a/Test/Components/Interfaces/OPCUA/Makefile.gcc
+++ b/Test/Components/Interfaces/OPCUA/Makefile.gcc
@@ -26,6 +26,11 @@ OBJSX = OPCUAServerGTest.x \
 	OPCUANodeGTest.x \
 	OPCUAObjectGTest.x \
 	OPCUAReferenceContainerGTest.x \
-	OPCUAMessageClientGTest.x
+	OPCUAMessageClientGTest.x \
+    OPCUAClientIGTest.x \
+    OPCUAClientReadGTest.x \
+    OPCUAClientWriteGTest.x \
+    OPCUAClientMethodGTest.x
+	
 
 include Makefile.inc
diff --git a/Test/Components/Interfaces/OPCUA/Makefile.inc b/Test/Components/Interfaces/OPCUA/Makefile.inc
index df924ca82a032f0f0b4c0352b6fb2438c10481a7..6fd3640ea8e6cabadecfdd808d133ed6b70bb3c9 100644
--- a/Test/Components/Interfaces/OPCUA/Makefile.inc
+++ b/Test/Components/Interfaces/OPCUA/Makefile.inc
@@ -22,7 +22,11 @@
 #
 #############################################################
 
-OBJSX +=  OPCUANodeTest.x \
+OBJSX +=OPCUAClientITest.x \
+    OPCUAClientReadTest.x \
+    OPCUAClientWriteTest.x \
+    OPCUAClientMethodTest.x \
+    OPCUANodeTest.x \
     OPCUAObjectTest.x \
     OPCUAReferenceContainerTest.x \
     OPCUAServerTest.x \
@@ -56,6 +60,8 @@ INCLUDES += -I$(OPEN62541_INCLUDE)/
 
 INCLUDES += -I../../../../Source/Components/Interfaces/OPCUA
 INCLUDES += -I../../../../Source/Components/DataSources/OPCUADataSource
+INCLUDES += -I../../../../Source/Components/GAMs/IOGAM
+
 INCLUDES += -I$(MARTe2_DIR)/Lib/gtest-1.7.0/include
 
 all: $(OBJS)    \
diff --git a/Test/Components/DataSources/OPCUADataSource/OPCUAClientIGTest.cpp b/Test/Components/Interfaces/OPCUA/OPCUAClientIGTest.cpp
similarity index 100%
rename from Test/Components/DataSources/OPCUADataSource/OPCUAClientIGTest.cpp
rename to Test/Components/Interfaces/OPCUA/OPCUAClientIGTest.cpp
diff --git a/Test/Components/DataSources/OPCUADataSource/OPCUAClientITest.cpp b/Test/Components/Interfaces/OPCUA/OPCUAClientITest.cpp
similarity index 100%
rename from Test/Components/DataSources/OPCUADataSource/OPCUAClientITest.cpp
rename to Test/Components/Interfaces/OPCUA/OPCUAClientITest.cpp
diff --git a/Test/Components/DataSources/OPCUADataSource/OPCUAClientITest.h b/Test/Components/Interfaces/OPCUA/OPCUAClientITest.h
similarity index 100%
rename from Test/Components/DataSources/OPCUADataSource/OPCUAClientITest.h
rename to Test/Components/Interfaces/OPCUA/OPCUAClientITest.h
diff --git a/Test/Components/DataSources/OPCUADataSource/OPCUAClientMethodGTest.cpp b/Test/Components/Interfaces/OPCUA/OPCUAClientMethodGTest.cpp
similarity index 100%
rename from Test/Components/DataSources/OPCUADataSource/OPCUAClientMethodGTest.cpp
rename to Test/Components/Interfaces/OPCUA/OPCUAClientMethodGTest.cpp
diff --git a/Test/Components/DataSources/OPCUADataSource/OPCUAClientMethodTest.cpp b/Test/Components/Interfaces/OPCUA/OPCUAClientMethodTest.cpp
similarity index 100%
rename from Test/Components/DataSources/OPCUADataSource/OPCUAClientMethodTest.cpp
rename to Test/Components/Interfaces/OPCUA/OPCUAClientMethodTest.cpp
diff --git a/Test/Components/DataSources/OPCUADataSource/OPCUAClientMethodTest.h b/Test/Components/Interfaces/OPCUA/OPCUAClientMethodTest.h
similarity index 100%
rename from Test/Components/DataSources/OPCUADataSource/OPCUAClientMethodTest.h
rename to Test/Components/Interfaces/OPCUA/OPCUAClientMethodTest.h
diff --git a/Test/Components/DataSources/OPCUADataSource/OPCUAClientReadGTest.cpp b/Test/Components/Interfaces/OPCUA/OPCUAClientReadGTest.cpp
similarity index 100%
rename from Test/Components/DataSources/OPCUADataSource/OPCUAClientReadGTest.cpp
rename to Test/Components/Interfaces/OPCUA/OPCUAClientReadGTest.cpp
diff --git a/Test/Components/DataSources/OPCUADataSource/OPCUAClientReadTest.cpp b/Test/Components/Interfaces/OPCUA/OPCUAClientReadTest.cpp
similarity index 100%
rename from Test/Components/DataSources/OPCUADataSource/OPCUAClientReadTest.cpp
rename to Test/Components/Interfaces/OPCUA/OPCUAClientReadTest.cpp
diff --git a/Test/Components/DataSources/OPCUADataSource/OPCUAClientReadTest.h b/Test/Components/Interfaces/OPCUA/OPCUAClientReadTest.h
similarity index 100%
rename from Test/Components/DataSources/OPCUADataSource/OPCUAClientReadTest.h
rename to Test/Components/Interfaces/OPCUA/OPCUAClientReadTest.h
diff --git a/Test/Components/DataSources/OPCUADataSource/OPCUAClientWriteGTest.cpp b/Test/Components/Interfaces/OPCUA/OPCUAClientWriteGTest.cpp
similarity index 100%
rename from Test/Components/DataSources/OPCUADataSource/OPCUAClientWriteGTest.cpp
rename to Test/Components/Interfaces/OPCUA/OPCUAClientWriteGTest.cpp
diff --git a/Test/Components/DataSources/OPCUADataSource/OPCUAClientWriteTest.cpp b/Test/Components/Interfaces/OPCUA/OPCUAClientWriteTest.cpp
similarity index 100%
rename from Test/Components/DataSources/OPCUADataSource/OPCUAClientWriteTest.cpp
rename to Test/Components/Interfaces/OPCUA/OPCUAClientWriteTest.cpp
diff --git a/Test/Components/DataSources/OPCUADataSource/OPCUAClientWriteTest.h b/Test/Components/Interfaces/OPCUA/OPCUAClientWriteTest.h
similarity index 100%
rename from Test/Components/DataSources/OPCUADataSource/OPCUAClientWriteTest.h
rename to Test/Components/Interfaces/OPCUA/OPCUAClientWriteTest.h