diff --git a/.gitignore b/.gitignore
index f6d3277d419dc0f3b09bd7528767d1d1284f0683..07cb04cc63a22d708949170b8ad2059f8bcb715f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,7 +31,7 @@ htmlcov
 # Developer tools
 *~
 .ropeproject
-
+.idea
 # Ansible
 *.retry
 
diff --git a/docs/source/SKAAlarmHandler.rst b/docs/source/SKAAlarmHandler.rst
index 6780071853fce8f3feb545fbcf93af2a82883de9..ecf3845d19b13e207df81cfc3ca7dff7d026a4e7 100644
--- a/docs/source/SKAAlarmHandler.rst
+++ b/docs/source/SKAAlarmHandler.rst
@@ -9,6 +9,7 @@ SKA AlarmHandler
 .. toctree::
    :maxdepth: 2
 
-.. automodule:: SKAAlarmHandler.SKAAlarmHandler
-   :members: SKAAlarmHandler
-
+.. automodule:: SKAAlarmHandler
+.. autoclass:: SKAAlarmHandler
+   :members:
+   :undoc-members:
diff --git a/docs/source/SKABaseDevice.rst b/docs/source/SKABaseDevice.rst
index e8ed3b4340bec677e0c303e3bfaac682491341c9..3bcc419bdcc27addda0d8391f8b6e7bdd5b69cca 100644
--- a/docs/source/SKABaseDevice.rst
+++ b/docs/source/SKABaseDevice.rst
@@ -9,6 +9,7 @@ SKA BaseDevice
 .. toctree::
    :maxdepth: 2
 
-.. automodule:: SKABaseDevice.SKABaseDevice
-   :members: SKABaseDevice
-
+.. automodule:: SKABaseDevice
+.. autoclass:: SKABaseDevice
+   :members:
+   :undoc-members:
diff --git a/docs/source/SKACapability.rst b/docs/source/SKACapability.rst
index 664fbb724034221e60edf57a637ed5ae94da7b9e..c63c6019bde331ad25bbb64a3cfc45018d75a34b 100644
--- a/docs/source/SKACapability.rst
+++ b/docs/source/SKACapability.rst
@@ -9,6 +9,7 @@ SKA Capability
 .. toctree::
    :maxdepth: 2
 
-.. automodule:: SKACapability.SKACapability
-   :members: SKACapability
-
+.. automodule:: SKACapability
+.. autoclass:: SKACapability
+   :members:
+   :undoc-members:
diff --git a/docs/source/SKALogger.rst b/docs/source/SKALogger.rst
index 0a403da01a0cd04e6b2df8f42da686db1d64d8d7..0a333cc8f83f8c94384227008d82fd86c6724c84 100644
--- a/docs/source/SKALogger.rst
+++ b/docs/source/SKALogger.rst
@@ -9,6 +9,7 @@ SKA Logger
 .. toctree::
    :maxdepth: 2
 
-.. automodule:: SKALogger.SKALogger
-   :members: SKALogger
-
+.. automodule:: SKALogger
+.. autoclass:: SKALogger
+   :members:
+   :undoc-members:
diff --git a/docs/source/SKAMaster.rst b/docs/source/SKAMaster.rst
index 23c1951fbebe2d5ba4ca1dbfbdcc4dcb19c1bec2..345f70fbb8e2ddf9d2768fd9ec10041f3f44bbf5 100644
--- a/docs/source/SKAMaster.rst
+++ b/docs/source/SKAMaster.rst
@@ -9,6 +9,7 @@ SKA Master
 .. toctree::
    :maxdepth: 2
 
-.. automodule:: SKAMaster.SKAMaster
-   :members: SKAMaster
-
+.. automodule:: SKAMaster
+.. autoclass:: SKAMaster
+   :members:
+   :undoc-members:
diff --git a/docs/source/SKAObsDevice.rst b/docs/source/SKAObsDevice.rst
index effee65ff8421ff71977321c96a9cb21585bcae8..18197923049f059310f17fc6401a3efa1940a50f 100644
--- a/docs/source/SKAObsDevice.rst
+++ b/docs/source/SKAObsDevice.rst
@@ -9,6 +9,7 @@ SKA ObsDevice
 .. toctree::
    :maxdepth: 2
 
-.. automodule:: SKAObsDevice.SKAObsDevice
-   :members: SKAObsDevice
-
+.. automodule:: SKAObsDevice
+.. autoclass:: SKAObsDevice
+   :members:
+   :undoc-members:
diff --git a/docs/source/SKASubarray.rst b/docs/source/SKASubarray.rst
index ada9fef9a11ebb4df72f57d5da6a1868501b616f..1a6fd122405721d757f9e91190a9fbde2d1c43f6 100644
--- a/docs/source/SKASubarray.rst
+++ b/docs/source/SKASubarray.rst
@@ -9,6 +9,7 @@ SKA Subarray
 .. toctree::
    :maxdepth: 2
 
-.. automodule:: SKASubarray.SKASubarray
-   :members: SKASubarray
-
+.. automodule:: SKASubarray
+.. autoclass:: SKASubarray
+   :members:
+   :undoc-members:
diff --git a/docs/source/SKATelState.rst b/docs/source/SKATelState.rst
index 7843a841a3d43aa12f7ff365b6fa03081e80688c..aa091637a896138027f4fea3600edbc1e6318b9a 100644
--- a/docs/source/SKATelState.rst
+++ b/docs/source/SKATelState.rst
@@ -9,6 +9,7 @@ SKA TelState
 .. toctree::
    :maxdepth: 2
 
-.. automodule:: SKATelState.SKATelState
-   :members: SKATelState
-
+.. automodule:: SKATelState
+.. autoclass:: SKATelState
+   :members:
+   :undoc-members:
diff --git a/docs/source/_static/dummy b/docs/source/_static/dummy
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/docs/source/conf.py b/docs/source/conf.py
index ab4270911b795f687c2ecad789d884ef3bb1664a..99993da52123a2ab8fff536c686709edb83a6b07 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -12,14 +12,42 @@
 # All configuration values have a default; values that are commented out
 # serve to show the default.
 
+# import sys
+# import os
+# from mock import Mock as MagicMock
+#
+# class Mock(MagicMock):
+#     @classmethod
+#     def __getattr__(cls, name):
+#         return MagicMock()
+#
+# # Mock tango modules
+# MOCK_MODULES = ['PyTango', 'tango', 'tango.server', 'run', 'DeviceMeta', 'command',
+#                 'future', 'future.utils', 'logging', 'logging.handlers']
+# sys.modules.update((mod_name, Mock()) for mod_name in MOCK_MODULES)
+
+autodoc_mock_imports = ['PyTango', 'tango', 'tango.server', 'run', 'DeviceMeta', 'command',
+                        'future', 'future.utils']
+
 import sys
 import os
 
+from mock import Mock as MagicMock
+
+class Mock(MagicMock):
+    @classmethod
+    def __getattr__(cls, name):
+        return MagicMock()
+
+# Mock tango modules
+MOCK_MODULES = ['logging', 'logging.handlers']
+sys.modules.update((mod_name, Mock()) for mod_name in MOCK_MODULES)
+
 # If extensions (or modules to document with autodoc) are in another directory,
 # add these directories to sys.path here. If the directory is relative to the
 # documentation root, use os.path.abspath to make it absolute, like shown here.
-sys.path.insert(0, os.path.abspath('../../skabase'))
-
+sys.path.insert(0, os.path.abspath('../../'))
+sys.path.append(os.path.abspath('../../skabase'))
 # -- General configuration ------------------------------------------------
 
 # If your documentation needs a minimal Sphinx version, state it here.
diff --git a/docs/source/index.rst b/docs/source/index.rst
index cfc4a810c759070e11e3413f7ca9b11c5602375f..6f78ae67640815672cf788a475816f8e0164e55d 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -6,13 +6,12 @@
 Welcome to LMC Base Classes documentation!
 ============================================
 
-Contents:
-
 .. toctree::
-   :maxdepth: 2
+  :caption: Table of Contents
+  :maxdepth: 2
 
-   SKA AlarmHandler<SKAAlarmHandler>
-   SKA BaseDevice<SKABaseDevice>
+   SKA Alarm Handler<SKAAlarmHandler>
+   SKA Base Device<SKABaseDevice>
    SKA Capability<SKACapability>
    SKA Logger<SKALogger>
    SKA Master<SKAMaster>
diff --git a/sandbox/hosts b/sandbox/hosts
deleted file mode 100644
index 6b74e2e9d3f26bfaa5b6944ec9833891e2f85f30..0000000000000000000000000000000000000000
--- a/sandbox/hosts
+++ /dev/null
@@ -1,2 +0,0 @@
-[local_host]
-127.0.0.1  ansible_ssh_user=kat ansible_ssh_pass=kat
diff --git a/sandbox/logging/CentralLogger.py b/sandbox/logging/CentralLogger.py
deleted file mode 100644
index adb396ea3c7bb029ba8033ad00253ef11bc598ad..0000000000000000000000000000000000000000
--- a/sandbox/logging/CentralLogger.py
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-"""CentralLogger device server receiving logs from SendingDS server"""
-import sys
-import time
-import logging
-from PyTango import server, DeviceProxy, Database, DbDevInfo, DevState, DebugIt, AttrQuality, AttrWriteType, DispLevel 
-from PyTango.server import Device, DeviceMeta, attribute, command, run, device_property
-
-
-"""CentralLogger device server class"""
-class CentralLogger(Device):
-    __metaclass__ = DeviceMeta
-
-    def init_device(self):
-        Device.init_device(self)
-        self.set_state(DevState.STANDBY)
-        self.info_stream("Init CentralLogger Device.")
-
-    @command(dtype_in='DevVarLongStringArray', dtype_out=None)
-    def SetCentralLoggingLevel(self, element_devices_and_levels):
-        CentralLoggingLevel = element_devices_and_levels[0][:]
-        CentralLoggingDevice = element_devices_and_levels[1][:]
-        i = 0
-        while i < len(CentralLoggingLevel[:]):
-            self.info_stream("%s,%s", CentralLoggingLevel[i], CentralLoggingDevice[i])
-            dev1 = DeviceProxy(CentralLoggingDevice[i])
-            dev1.centralLoggingLevel = CentralLoggingLevel[i]
-            property_names = ["logging_level",
-                              "logging_target",
-                             ]
-            dev_properties = dev1.get_property(property_names)
-            dev_properties["logging_level"] = ["DEBUG"]
-            dev_properties["logging_target"].append("device::central/cdev/cdev1")
-            dev1.put_property(dev_properties)
-            dev1.add_logging_target("device::central/cdev/cdev1")
-            i+=1
-
-    """Logs are received from all element devices at all levels.
-       Filtering happens within the log function depending upon
-       CentralLoggingLevel of each element device.
-       NOTE : This fiteration logic is still under consideration."""
-    @command(dtype_in='DevVarStringArray', dtype_out=None)
-    def log(self, details):
-        cmessage = details[3]
-        clevel = details[1]
-        tango_log_level = {"FATAL": 1, "ERROR": 2, "WARN": 3, "INFO": 4, "DEBUG": 5}
-        level_number = tango_log_level[clevel]
-        clogsource = details[2]
-        if clogsource == details[2]:
-            device = DeviceProxy(clogsource)
-            deviceLogLevel = device.centralLoggingLevel
-
-            if clevel == "FATAL" and level_number <= deviceLogLevel:
-                self.fatal_stream("%s : %s", clogsource, cmessage)
-            elif clevel == "ERROR" and level_number <= deviceLogLevel:
-                self.error_stream("%s : %s", clogsource, cmessage)
-            elif clevel == "WARN" and level_number <= deviceLogLevel:
-                self.warn_stream("%s : %s", clogsource, cmessage)
-            elif clevel == "INFO" and level_number <= deviceLogLevel:
-                self.info_stream("%s : %s", clogsource, cmessage)
-            elif clevel == "DEBUG" and level_number <= deviceLogLevel:
-                self.debug_stream("%s : %s", clogsource, cmessage)
-            else:
-                pass
-        else:
-            pass
-
-run((CentralLogger,))
diff --git a/sandbox/logging/ElementLogger.py b/sandbox/logging/ElementLogger.py
deleted file mode 100644
index 3d638533bde3468a362da852e97a01835a1a0f91..0000000000000000000000000000000000000000
--- a/sandbox/logging/ElementLogger.py
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-"""ElementLogger device server receiving logs from another device server"""
-import sys
-import time
-import logging
-from PyTango import server, DeviceProxy, Database, DbDevInfo, DevState, DebugIt, AttrQuality, AttrWriteType, DispLevel 
-from PyTango.server import Device, DeviceMeta, attribute, command, run, device_property
-
-
-"""ElementLogger device server class"""
-class ElementLogger(Device):
-    __metaclass__ = DeviceMeta
-
-    def init_device(self):
-        Device.init_device(self)
-        self.__StorageLoggingLevel = 5 #Storage logging level for ElementLogger(Unused currently)
-        self.__ElementLoggingLevel = 5 #Element logging level for all Element devices(Unused currently)
-        self.set_state(DevState.STANDBY)
-        self.info_stream("Init ElementLogger Device.")
-
-    @command(dtype_in='DevVarLongStringArray', dtype_out=None)
-    def SetStorageLoggingLevel(self, storages):
-        StorageLoggingLevel = storages[0][:]
-        StorageLoggingDevice = storages[1][:]
-        i = 0
-        while i < len(StorageLoggingLevel[:]):
-            self.info_stream("%s,%s", StorageLoggingLevel[i], StorageLoggingDevice[i])
-            dev1 = DeviceProxy(StorageLoggingDevice[i])
-            dev1.storageLoggingLevel = StorageLoggingLevel[i]
-            i+=1
-
-    @command(dtype_in='DevVarLongStringArray', dtype_out=None)
-    def SetElementLoggingLevel(self, element_devices_and_levels):
-        ElementLoggingLevel = element_devices_and_levels[0][:]
-        ElementLoggingDevice = element_devices_and_levels[1][:]
-        i = 0
-        while i < len(ElementLoggingLevel[:]):
-            self.info_stream("%s,%s", ElementLoggingLevel[i], ElementLoggingDevice[i])
-            dev1 = DeviceProxy(ElementLoggingDevice[i])
-            dev1.elementLoggingLevel = ElementLoggingLevel[i]
-            property_names = ["logging_level",
-                              "logging_target",
-                             ]
-            dev_properties = dev1.get_property(property_names)
-            dev_properties["logging_level"] = ["DEBUG"]
-            dev_properties["logging_target"].append("device::ellogger/elem/elem1")
-            dev1.put_property(dev_properties)
-            dev1.add_logging_target("device::ellogger/elem/elem1")
-            i+=1
-        
-    """Logs are received from all element devices at all levels.
-       Filtering happens within the log function depending upon
-       ElementLoggingLevel of each element device.
-       NOTE : This fiteration logic is still under consideration."""
-    @command(dtype_in='DevVarStringArray', dtype_out=None)
-    def log(self, details):
-        message = details[3]
-        level = details[1]
-        tango_log_level = {"FATAL": 1, "ERROR": 2, "WARN": 3, "INFO": 4, "DEBUG": 5}
-        level_number = tango_log_level[level]
-        logsource = details[2]
-        if logsource == details[2]:
-            device = DeviceProxy(logsource)
-            deviceLogLevel = device.elementLoggingLevel
-            if level == "FATAL" and level_number <= deviceLogLevel:
-                self.fatal_stream("%s : %s", logsource, message)
-            elif level == "ERROR" and level_number <= deviceLogLevel:
-                self.error_stream("%s : %s", logsource, message)
-            elif level == "WARN" and level_number <= deviceLogLevel:
-                self.warn_stream("%s : %s", logsource, message)
-            elif level == "INFO" and level_number <= deviceLogLevel:
-                self.info_stream("%s : %s", logsource, message)
-            elif level == "DEBUG" and level_number <= deviceLogLevel: 
-                self.debug_stream("%s : %s", logsource, message)
-            else:
-                pass
-        else:
-            pass
-
-run((ElementLogger,))
diff --git a/sandbox/logging/ReceivingDS.py b/sandbox/logging/ReceivingDS.py
deleted file mode 100644
index 011ce9b6f1dc0a5d7ce29db1971870c84e0b61e3..0000000000000000000000000000000000000000
--- a/sandbox/logging/ReceivingDS.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-"""Dummy tango receiving logging device server as CentralLogger"""
-import time
-import sys
-from PyTango import server, DeviceProxy, Database, DbDevInfo, DevState, DebugIt
-from PyTango.server import  Device, DeviceMeta,  command, run
-
-
-"""Created Receiving device server class"""
-class Receiving(Device):
-    __metaclass__ = DeviceMeta
-
-    def init_device(self):
-        Device.init_device(self)
-        self.set_state(DevState.STANDBY)
-        self.debug_stream("Init Receiving Device.")
-
-    @command(dtype_in='DevVarStringArray', dtype_out=None)
-    def log(self, details):
-        message = details[3]
-#        print(message)
-        self.debug_stream(message)
-
-"""This part is needed to start device server from command line"""
-if '--register' in sys.argv:
-    reg_ind = sys.argv.index('--register')
-    sys.argv.pop(reg_ind)
-    name = sys.argv.pop(reg_ind)
-    db = Database()
-    dev_info = DbDevInfo()
-    dev_info._class = 'Receiving'
-    dev_info.server = 'ReceivingDS/logdev'
-    dev_info.name = name
-    db.add_device(dev_info)
-    print("In registration")
-else:
-    print("Running DS")
-    run([Receiving])
diff --git a/sandbox/logging/Sending.py b/sandbox/logging/Sending.py
deleted file mode 100644
index 624245b60d8f47b70f189eab3ed0761b4c84a28c..0000000000000000000000000000000000000000
--- a/sandbox/logging/Sending.py
+++ /dev/null
@@ -1,115 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-"""Sending Device server which is logged by ElementLogger and CentralLogger"""
-import sys
-import time
-import logging
-import logging.handlers
-import syslog
-from logging.handlers import SysLogHandler
-from PyTango import AttrQuality, AttrWriteType, DispLevel, DevState, DebugIt, Database, DbDevInfo, DeviceProxy
-from PyTango.server import Device, DeviceMeta, attribute, command, run, device_property
-
-logger = logging.getLogger("Sending")
-syslog = SysLogHandler(address='/dev/log', facility='user')
-formatter = logging.Formatter('%(name)s: %(levelname)s %(module)s %(message)r')
-syslog.setFormatter(formatter)
-logger.addHandler(syslog)
-
-"""Sending Device server class"""
-class Sending(Device):
-    __metaclass__ = DeviceMeta
-
-    """Attributes for setting logging levels for element storage and central"""
-    elementLoggingLevel = attribute(label="ElementLogginglevel", dtype=int,
-                         fget="get_elementLoggingLevel",
-                         fset="set_elementLoggingLevel",
-                         doc="Sets element logging level")
-
-    storageLoggingLevel = attribute(label="StorgeLoggingLevel", dtype=int,
-                         fget="get_storageLoggingLevel",
-                         fset="set_storageLoggingLevel",
-                         doc="Sets syslog logging level")
-
-    centralLoggingLevel = attribute(label="CentralLoggingLevel", dtype=int,
-                         fget="get_centralLoggingLevel",
-                         fset="set_centralLoggingLevel",
-                         doc="Sets Central logging level")
-
-    def init_device(self):
-        Device.init_device(self)
-        self.set_state(DevState.STANDBY)
-        self.__elementLoggingLevel = 5        
-        self.__storageLoggingLevel = 5        
-        self.__centralLoggingLevel = 5        
-        logger.setLevel(logging.DEBUG)
-
-    def get_elementLoggingLevel(self):
-        return self.__elementLoggingLevel
-
-    def set_elementLoggingLevel(self, elementLoggingLevel):
-        self.__elementLoggingLevel = elementLoggingLevel
-        return elementLoggingLevel
-
-    def get_centralLoggingLevel(self):
-        return self.__centralLoggingLevel
-
-    def set_centralLoggingLevel(self, centralLoggingLevel):
-        self.__centralLoggingLevel = centralLoggingLevel
-        return centralLoggingLevel
-
-    def get_storageLoggingLevel(self):
-        return self.__storageLoggingLevel
-
-    def set_storageLoggingLevel(self, storageLoggingLevel):
-        self.debug_stream("In set_StorageLogginglevel")
-        self.__storageLoggingLevel = storageLoggingLevel
-
-        if self.__storageLoggingLevel == 1:
-            logger.setLevel(logging.FATAL)
-        elif self.__storageLoggingLevel == 2:
-            logger.setLevel(logging.ERROR)
-        elif self.__storageLoggingLevel == 3:
-            logger.setLevel(logging.WARNING)
-        elif self.__storageLoggingLevel == 4:
-            logger.setLevel(logging.INFO)
-        elif self.__storageLoggingLevel == 5:
-            logger.setLevel(logging.DEBUG)
-        else:
-            logger.setLevel(logging.DEBUG)
-        return storageLoggingLevel
-
-    @command
-    def TurnOn(self):
-        # turn on the sending device.
-        self.set_state(DevState.ON)
-        self.debug_stream("TurnOn Sending DEBUG")
-        self.info_stream("TurnOn Sending INFO")
-        self.warn_stream("TurnOn Sending WARNING")
-        self.error_stream("TurnOn Sending ERROR")
-        self.fatal_stream("TurnOn Sending FATAL")
-
-        logger.debug("TurnOn Sending debug")
-        logger.info("TurnOn Sending info")
-        logger.warning("TurnOn Sending warn")
-        logger.error("TurnOn Sending error")
-        logger.fatal("TurnOn Sending fatal")
-
-    @command
-    def TurnOff(self):
-        # turn off the sending device
-        self.set_state(DevState.OFF)
-        self.debug_stream("TurnOff Sending DEBUG")
-        self.info_stream("TurnOff Sending INFO")
-        self.warn_stream("TurnOff Sending WARNING")
-        self.error_stream("TurnOff Sending ERROR")
-        self.fatal_stream("TurnOff Sending FATAL")
-
-        logger.debug("TurnOff Sending debug")
-        logger.info("TurnOff Sending info")
-        logger.warning("TurnOff Sending warn")
-        logger.error("TurnOff Sending error")
-        logger.fatal("TurnOff Sending fatal")
-
-run([Sending])
diff --git a/sandbox/logging/SendingDS.py b/sandbox/logging/SendingDS.py
deleted file mode 100644
index 44b4878cfddf262f0567b65aebf8abb323e9e69e..0000000000000000000000000000000000000000
--- a/sandbox/logging/SendingDS.py
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-"""Dummy Device server as sending device to CentralLoggerDS"""
-
-import time
-import sys
-from PyTango import server 
-from PyTango import Database, DbDevInfo, DevState
-from PyTango.server import Device, DeviceMeta, command, run
-
-"""Created Device Class"""
-class Sending(Device):
-    __metaclass__ = DeviceMeta
-
-    def init_device(self):
-        Device.init_device(self)
-        self.set_state(DevState.STANDBY)
-        self.debug_stream("Init Sending device.")
-
-    @command
-    def TurnOn(self):
-        # turn on the sending device.
-        self.debug_stream("TurnOn Sending device")
-        self.set_state(DevState.ON)
-
-    @command
-    def TurnOff(self):
-        # turn off the sending device
-        self.debug_stream("TurnOff Sending device.")
-        self.set_state(DevState.OFF)
-
-"""This part is needed to start device server from command line"""
-if '--register' in sys.argv:
-    reg_ind = sys.argv.index('--register')
-    sys.argv.pop(reg_ind)
-    name = sys.argv.pop(reg_ind)
-    db = Database()
-    dev_info = DbDevInfo()
-    dev_info._class = 'Sending'
-    dev_info.server = 'SendingDS/dummy'
-    dev_info.name = name
-    db.add_device(dev_info)
-else:
-    run([Sending])
diff --git a/sandbox/logging/Verification.pdf b/sandbox/logging/Verification.pdf
deleted file mode 100644
index 23d3739ab7b91eac35de7e37b19f71986c1b685f..0000000000000000000000000000000000000000
Binary files a/sandbox/logging/Verification.pdf and /dev/null differ
diff --git a/sandbox/refelt_config_db.json b/sandbox/refelt_config_db.json
deleted file mode 100644
index 1eeb0d7064f655d3dccc10a186e89ba99ee21bae..0000000000000000000000000000000000000000
--- a/sandbox/refelt_config_db.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
-    "api_version": "v1",
-    "tango_servers": [
-      {
-          "server_name": "RefA",
-          "server_instances": [
-              {
-                  "instance_name": "1",
-                  "device_classes": [
-                      {
-                          "class_name": "RefA",
-                          "devices": ["ref/A/1"]
-                      }
-                  ]
-              },
-              {
-                  "instance_name": "2",
-                  "device_classes": [
-                      {
-                          "class_name": "RefA",
-                          "devices": ["ref/A/2"]
-                      }
-                  ]
-              }
-            ]
-        },
-        {
-            "server_name": "RefAchild",
-            "server_instances": [
-                {
-                    "instance_name": "1",
-                    "device_classes": [
-                        {
-                            "class_name": "RefAchild",
-                            "devices": ["ref/achild/11", "ref/achild/12"]
-                        }
-                    ]
-                },
-                {
-                    "instance_name": "2",
-                    "device_classes": [
-                        {
-                            "class_name": "RefAchild",
-                            "devices": ["ref/achild/21", "ref/achild/22"]
-                        }
-                    ]
-                }
-              ]
-        },
-        {
-            "server_name": "RefMaster",
-            "server_instances": [
-                {
-                    "instance_name": "1",
-                    "device_classes": [
-                        {
-                            "class_name": "RefMaster",
-                            "devices": ["ref/elt/master"]
-                        }
-                    ]
-                }
-              ]
-        },
-        {
-            "server_name": "FileLogger",
-            "server_instances": [
-                {
-                    "instance_name": "elt",
-                    "device_classes": [
-                        {
-                            "class_name": "FileLogger",
-                            "devices": ["ref/elt/logger"]
-                        }
-                    ]
-                },
-                {
-                    "instance_name": "central",
-                    "device_classes": [
-                        {
-                            "class_name": "FileLogger",
-                            "devices": ["ref/central/logger"]
-                        }
-                    ]
-                },
-                {
-                    "instance_name": "another",
-                    "device_classes": [
-                        {
-                            "class_name": "FileLogger",
-                            "devices": ["ref/central/another_logger"]
-                        }
-                    ]
-                }
-              ]
-        }
-    ]
-}
diff --git a/sandbox/refelt_config_starter.json b/sandbox/refelt_config_starter.json
deleted file mode 100644
index c98b147f4c2ecb9ebfee55cea8b5af1f6ef5293f..0000000000000000000000000000000000000000
--- a/sandbox/refelt_config_starter.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-    "api_version": "v1",
-    "tango_hosts": {
-          "lmc-base-classes": [
-              {
-                  "startup_level": 1,
-                  "server_instances": ["FileLogger/elt", "FileLogger/central"]
-              },
-              {
-                  "startup_level": 2,
-                  "server_instances": ["RefAchild/11", "RefAchildA/12", "RefAchild/21", "RefAchild/22"]
-              },
-              {
-                  "startup_level": 3,
-                  "server_instances": ["RefA/1", "RefA/2"]
-              },
-              {
-                  "startup_level": 5,
-                  "server_instances": ["RefMaster/1"]
-              }
-          ]
-    }
-}
diff --git a/sandbox/refelt_device_properties.json b/sandbox/refelt_device_properties.json
deleted file mode 100644
index 5bd96b8e02673404ab7d630de77c21b2e0e2e14c..0000000000000000000000000000000000000000
--- a/sandbox/refelt_device_properties.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
-    "api_version": "v1",
-    "devices": {
-        "ref/A/1": {
-            "GroupDefinitions": []
-        },
-        "ref/A/2": {
-            "GroupDefinitions": []
-        },
-        "ref/achild/11": {
-            "GroupDefinitions": []
-        },
-        "ref/achild/12": {
-            "GroupDefinitions": []
-        },
-        "ref/achild/21": {
-            "GroupDefinitions": []
-        },
-        "ref/achild/22": {
-            "GroupDefinitions": []
-        },
-        "ref/elt/master": {
-            "GroupDefinitions": []
-        },
-        "ref/elt/logger": {
-            "GroupDefinitions": []
-        },
-        "ref/central/logger": {
-            "GroupDefinitions": []
-        }
-    }
-}
diff --git a/sandbox/tangodb_register.yml b/sandbox/tangodb_register.yml
deleted file mode 100644
index 0b54af38cb757447238c541ef3ed27a5f89a5b7a..0000000000000000000000000000000000000000
--- a/sandbox/tangodb_register.yml
+++ /dev/null
@@ -1,32 +0,0 @@
----
-- hosts:  devk
-  become: yes
-  tasks:
-  - name: Copying the TANGO DB registration script to the server.
-    copy:
-       src: register_db.py
-       dest: /home 
-  - name: Copying the ref element config file to the server.
-    copy:
-       src: refelt_config.json
-       dest: /home
-  - name: Register the Reference Element.
-    command: python /home/register_db.py
-    register: print
-
-  - debug: msg="{{ print.stdout }}"
-
-  - name: Copying the Starter script to the server.
-    copy:
-       src: start_servers.py
-       dest: /home
-  - name: Copying the ref element starter config file to the server.
-    copy:
-       src: refelt_config_starter.json
-       dest: /home
-  - name: Start the Reference Element.
-    command: python /home/start_servers.py
-    register: print
-
-  - debug: msg="{{ print.stdout }}"
-...
diff --git a/sandbox/xmi_files/ChildX1.xmi b/sandbox/xmi_files/ChildX1.xmi
deleted file mode 100644
index 4e66752730441f7752404b43e19291f05adfba27..0000000000000000000000000000000000000000
--- a/sandbox/xmi_files/ChildX1.xmi
+++ /dev/null
@@ -1,102 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<pogoDsl:PogoSystem xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pogoDsl="http://www.esrf.fr/tango/pogo/PogoDsl">
-  <classes name="ChildX1" pogoRevision="9.1">
-    <description description="" title="" sourcePath="/home/kmadisa/Desktop" language="Python" filestogenerate="XMI   file,Code files,Protected Regions" license="none" copyright="" hasMandatoryProperty="false" hasConcreteProperty="true" hasAbstractCommand="false" hasAbstractAttribute="false">
-      <inheritances classname="Device_Impl" sourcePath=""/>
-      <inheritances classname="ParentX" sourcePath="./"/>
-      <identification contact="at ska.ac.za - kmadisa" author="kmadisa" emailDomain="ska.ac.za" classFamily="Simulators" siteSpecific="" platform="All Platforms" bus="Ethernet" manufacturer="none" reference=""/>
-    </description>
-    <classProperties name="clsprop1" description="">
-      <type xsi:type="pogoDsl:StringType"/>
-      <status abstract="false" inherited="true" concrete="true"/>
-    </classProperties>
-    <classProperties name="clsprop2" description="">
-      <type xsi:type="pogoDsl:StringType"/>
-      <status abstract="false" inherited="true" concrete="true"/>
-    </classProperties>
-    <classProperties name="clspropx2_3" description="">
-      <type xsi:type="pogoDsl:StringType"/>
-      <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
-    </classProperties>
-    <deviceProperties name="devprop1" description="">
-      <type xsi:type="pogoDsl:StringType"/>
-      <status abstract="false" inherited="true" concrete="true"/>
-    </deviceProperties>
-    <deviceProperties name="devprop2" description="">
-      <type xsi:type="pogoDsl:StringType"/>
-      <status abstract="false" inherited="true" concrete="true"/>
-    </deviceProperties>
-    <deviceProperties name="devpropx1_3" description="">
-      <type xsi:type="pogoDsl:StringType"/>
-      <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
-    </deviceProperties>
-    <commands name="State" description="This command gets the device state (stored in its device_state data member) and returns it to the caller." execMethod="dev_state" displayLevel="OPERATOR" polledPeriod="0">
-      <argin description="none">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argin>
-      <argout description="Device state">
-        <type xsi:type="pogoDsl:StateType"/>
-      </argout>
-      <status abstract="true" inherited="true" concrete="true"/>
-    </commands>
-    <commands name="Status" description="This command gets the device status (stored in its device_status data member) and returns it to the caller." execMethod="dev_status" displayLevel="OPERATOR" polledPeriod="0">
-      <argin description="none">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argin>
-      <argout description="Device status">
-        <type xsi:type="pogoDsl:ConstStringType"/>
-      </argout>
-      <status abstract="true" inherited="true" concrete="true"/>
-    </commands>
-    <commands name="cmd1" description="" execMethod="cmd1" displayLevel="OPERATOR" polledPeriod="0">
-      <argin description="">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argin>
-      <argout description="">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argout>
-      <status abstract="false" inherited="true" concrete="true"/>
-    </commands>
-    <commands name="cmd2" description="" execMethod="cmd2" displayLevel="OPERATOR" polledPeriod="0">
-      <argin description="">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argin>
-      <argout description="">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argout>
-      <status abstract="false" inherited="true" concrete="true"/>
-    </commands>
-    <commands name="cmdx1_3" description="" execMethod="cmdx1_3" displayLevel="OPERATOR" polledPeriod="0" isDynamic="false">
-      <argin description="">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argin>
-      <argout description="">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argout>
-      <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
-    </commands>
-    <attributes name="attr1" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true">
-      <dataType xsi:type="pogoDsl:DoubleType"/>
-      <changeEvent fire="false" libCheckCriteria="false"/>
-      <archiveEvent fire="false" libCheckCriteria="false"/>
-      <status abstract="false" inherited="true" concrete="true"/>
-      <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
-    </attributes>
-    <attributes name="attr2" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true">
-      <dataType xsi:type="pogoDsl:DoubleType"/>
-      <changeEvent fire="false" libCheckCriteria="false"/>
-      <archiveEvent fire="false" libCheckCriteria="false"/>
-      <status abstract="false" inherited="true" concrete="true"/>
-      <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
-    </attributes>
-    <attributes name="attrx1_3" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false">
-      <dataType xsi:type="pogoDsl:DoubleType"/>
-      <changeEvent fire="false" libCheckCriteria="false"/>
-      <archiveEvent fire="false" libCheckCriteria="false"/>
-      <dataReadyEvent fire="false" libCheckCriteria="true"/>
-      <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
-      <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
-    </attributes>
-    <preferences docHome="./doc_html" makefileHome="/usr/share/pogo/preferences"/>
-  </classes>
-</pogoDsl:PogoSystem>
diff --git a/sandbox/xmi_files/ChildX2.xmi b/sandbox/xmi_files/ChildX2.xmi
deleted file mode 100644
index 9dd93cb81e006f81a5fd8c07ac7df809352d0dfb..0000000000000000000000000000000000000000
--- a/sandbox/xmi_files/ChildX2.xmi
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<pogoDsl:PogoSystem xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pogoDsl="http://www.esrf.fr/tango/pogo/PogoDsl">
-  <classes name="ChildX2" pogoRevision="9.1">
-    <description description="" title="" sourcePath="/home/kmadisa/Desktop" language="Python" filestogenerate="XMI   file,Code files,Protected Regions" license="none" copyright="" hasMandatoryProperty="false" hasConcreteProperty="true" hasAbstractCommand="false" hasAbstractAttribute="false">
-      <inheritances classname="Device_Impl" sourcePath=""/>
-      <inheritances classname="ParentX" sourcePath="./"/>
-      <identification contact="at ska.ac.za - kmadisa" author="kmadisa" emailDomain="ska.ac.za" classFamily="Simulators" siteSpecific="" platform="All Platforms" bus="Ethernet" manufacturer="none" reference=""/>
-    </description>
-    <classProperties name="clsprop1" description="">
-      <type xsi:type="pogoDsl:StringType"/>
-      <status abstract="false" inherited="true" concrete="true"/>
-    </classProperties>
-    <classProperties name="clsprop2" description="">
-      <type xsi:type="pogoDsl:StringType"/>
-      <status abstract="false" inherited="true" concrete="true"/>
-    </classProperties>
-    <classProperties name="clspropx2_3" description="">
-      <type xsi:type="pogoDsl:StringType"/>
-      <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
-    </classProperties>
-    <deviceProperties name="devprop1" description="">
-      <type xsi:type="pogoDsl:StringType"/>
-      <status abstract="false" inherited="true" concrete="true"/>
-    </deviceProperties>
-    <deviceProperties name="devprop2" description="">
-      <type xsi:type="pogoDsl:StringType"/>
-      <status abstract="false" inherited="true" concrete="true"/>
-    </deviceProperties>
-    <deviceProperties name="devpropx2_3" description="">
-      <type xsi:type="pogoDsl:StringType"/>
-      <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
-    </deviceProperties>
-    <commands name="State" description="This command gets the device state (stored in its device_state data member) and returns it to the caller." execMethod="dev_state" displayLevel="OPERATOR" polledPeriod="0">
-      <argin description="none">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argin>
-      <argout description="Device state">
-        <type xsi:type="pogoDsl:StateType"/>
-      </argout>
-      <status abstract="true" inherited="true" concrete="true"/>
-    </commands>
-    <commands name="Status" description="This command gets the device status (stored in its device_status data member) and returns it to the caller." execMethod="dev_status" displayLevel="OPERATOR" polledPeriod="0">
-      <argin description="none">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argin>
-      <argout description="Device status">
-        <type xsi:type="pogoDsl:ConstStringType"/>
-      </argout>
-      <status abstract="true" inherited="true" concrete="true"/>
-    </commands>
-    <commands name="cmd1" description="" execMethod="cmd1" displayLevel="OPERATOR" polledPeriod="0">
-      <argin description="">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argin>
-      <argout description="">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argout>
-      <status abstract="false" inherited="true" concrete="true"/>
-    </commands>
-    <commands name="cmd2" description="" execMethod="cmd2" displayLevel="OPERATOR" polledPeriod="0">
-      <argin description="">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argin>
-      <argout description="">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argout>
-      <status abstract="false" inherited="true" concrete="true"/>
-    </commands>
-    <attributes name="attr1" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true">
-      <dataType xsi:type="pogoDsl:DoubleType"/>
-      <changeEvent fire="false" libCheckCriteria="false"/>
-      <archiveEvent fire="false" libCheckCriteria="false"/>
-      <status abstract="false" inherited="true" concrete="true"/>
-      <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
-    </attributes>
-    <attributes name="attr2" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true">
-      <dataType xsi:type="pogoDsl:DoubleType"/>
-      <changeEvent fire="false" libCheckCriteria="false"/>
-      <archiveEvent fire="false" libCheckCriteria="false"/>
-      <status abstract="false" inherited="true" concrete="true"/>
-      <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
-    </attributes>
-    <attributes name="attrx2_3" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false">
-      <dataType xsi:type="pogoDsl:DoubleType"/>
-      <changeEvent fire="false" libCheckCriteria="false"/>
-      <archiveEvent fire="false" libCheckCriteria="false"/>
-      <dataReadyEvent fire="false" libCheckCriteria="true"/>
-      <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
-      <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
-    </attributes>
-    <preferences docHome="./doc_html" makefileHome="/usr/share/pogo/preferences"/>
-  </classes>
-</pogoDsl:PogoSystem>
diff --git a/sandbox/xmi_files/GrandchildX1.xmi b/sandbox/xmi_files/GrandchildX1.xmi
deleted file mode 100644
index 93c4aea144e638f9b3ebae9825fac13c42c55f8c..0000000000000000000000000000000000000000
--- a/sandbox/xmi_files/GrandchildX1.xmi
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<pogoDsl:PogoSystem xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pogoDsl="http://www.esrf.fr/tango/pogo/PogoDsl">
-  <classes name="GrandchildX1" pogoRevision="9.2">
-    <description description="" title="" sourcePath="/home/kmadisa/Desktop" language="Python" filestogenerate="XMI   file,Code files,Protected Regions" license="none" copyright="" hasMandatoryProperty="false" hasConcreteProperty="false" hasAbstractCommand="false" hasAbstractAttribute="false">
-      <inheritances classname="Device_Impl" sourcePath=""/>
-      <inheritances classname="ParentX" sourcePath="./."/>
-      <inheritances classname="ChildX1" sourcePath="./."/>
-      <identification contact="at ska.ac.za - kmadisa" author="kmadisa" emailDomain="ska.ac.za" classFamily="Simulators" siteSpecific="" platform="All Platforms" bus="Ethernet" manufacturer="none" reference=""/>
-    </description>
-    <classProperties name="clsprop1" description="">
-      <type xsi:type="pogoDsl:StringType"/>
-      <status abstract="false" inherited="true" concrete="true"/>
-    </classProperties>
-    <classProperties name="clsprop2" description="">
-      <type xsi:type="pogoDsl:StringType"/>
-      <status abstract="false" inherited="true" concrete="true"/>
-    </classProperties>
-    <classProperties name="clspropx2_3" description="">
-      <type xsi:type="pogoDsl:StringType"/>
-      <status abstract="false" inherited="true" concrete="true"/>
-    </classProperties>
-    <deviceProperties name="devprop1" description="">
-      <type xsi:type="pogoDsl:StringType"/>
-      <status abstract="false" inherited="true" concrete="true"/>
-    </deviceProperties>
-    <deviceProperties name="devprop2" description="">
-      <type xsi:type="pogoDsl:StringType"/>
-      <status abstract="false" inherited="true" concrete="true"/>
-    </deviceProperties>
-    <deviceProperties name="devpropx1_3" description="">
-      <type xsi:type="pogoDsl:StringType"/>
-      <status abstract="false" inherited="true" concrete="true"/>
-    </deviceProperties>
-    <commands name="State" description="This command gets the device state (stored in its device_state data member) and returns it to the caller." execMethod="dev_state" displayLevel="OPERATOR" polledPeriod="0">
-      <argin description="none">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argin>
-      <argout description="Device state">
-        <type xsi:type="pogoDsl:StateType"/>
-      </argout>
-      <status abstract="true" inherited="true" concrete="true"/>
-    </commands>
-    <commands name="Status" description="This command gets the device status (stored in its device_status data member) and returns it to the caller." execMethod="dev_status" displayLevel="OPERATOR" polledPeriod="0">
-      <argin description="none">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argin>
-      <argout description="Device status">
-        <type xsi:type="pogoDsl:ConstStringType"/>
-      </argout>
-      <status abstract="true" inherited="true" concrete="true"/>
-    </commands>
-    <commands name="cmd1" description="" execMethod="cmd1" displayLevel="OPERATOR" polledPeriod="0">
-      <argin description="">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argin>
-      <argout description="">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argout>
-      <status abstract="false" inherited="true" concrete="true"/>
-    </commands>
-    <commands name="cmd2" description="" execMethod="cmd2" displayLevel="OPERATOR" polledPeriod="0">
-      <argin description="">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argin>
-      <argout description="">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argout>
-      <status abstract="false" inherited="true" concrete="true"/>
-    </commands>
-    <commands name="cmdx1_3" description="" execMethod="cmdx1_3" displayLevel="OPERATOR" polledPeriod="0">
-      <argin description="">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argin>
-      <argout description="">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argout>
-      <status abstract="false" inherited="true" concrete="true"/>
-    </commands>
-    <attributes name="attr1" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true">
-      <dataType xsi:type="pogoDsl:DoubleType"/>
-      <changeEvent fire="false" libCheckCriteria="false"/>
-      <archiveEvent fire="false" libCheckCriteria="false"/>
-      <status abstract="false" inherited="true" concrete="true"/>
-      <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
-    </attributes>
-    <attributes name="attr2" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true">
-      <dataType xsi:type="pogoDsl:DoubleType"/>
-      <changeEvent fire="false" libCheckCriteria="false"/>
-      <archiveEvent fire="false" libCheckCriteria="false"/>
-      <status abstract="false" inherited="true" concrete="true"/>
-      <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
-    </attributes>
-    <attributes name="attrx1_3" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true">
-      <dataType xsi:type="pogoDsl:DoubleType"/>
-      <changeEvent fire="false" libCheckCriteria="false"/>
-      <archiveEvent fire="false" libCheckCriteria="false"/>
-      <status abstract="false" inherited="true" concrete="true"/>
-      <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
-    </attributes>
-    <attributes name="attrx1_4" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false">
-      <dataType xsi:type="pogoDsl:DoubleType"/>
-      <changeEvent fire="false" libCheckCriteria="false"/>
-      <archiveEvent fire="false" libCheckCriteria="false"/>
-      <dataReadyEvent fire="false" libCheckCriteria="true"/>
-      <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
-      <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
-    </attributes>
-    <preferences docHome="./doc_html" makefileHome="$(TANGO_HOME)"/>
-  </classes>
-</pogoDsl:PogoSystem>
diff --git a/sandbox/xmi_files/ParentX.xmi b/sandbox/xmi_files/ParentX.xmi
deleted file mode 100644
index e36ed048431e23569edda4c3862246e1b2064305..0000000000000000000000000000000000000000
--- a/sandbox/xmi_files/ParentX.xmi
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<pogoDsl:PogoSystem xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pogoDsl="http://www.esrf.fr/tango/pogo/PogoDsl">
-  <classes name="ParentX" pogoRevision="9.2">
-    <description description="" title="Inheritance residue" sourcePath="/home/kmadisa/Desktop" language="Python" filestogenerate="XMI   file,Code files,Protected Regions" license="none" copyright="" hasMandatoryProperty="false" hasConcreteProperty="true" hasAbstractCommand="false" hasAbstractAttribute="false">
-      <inheritances classname="Device_Impl" sourcePath=""/>
-      <identification contact="at ska.ac.za - kmadisa" author="kmadisa" emailDomain="ska.ac.za" classFamily="Simulators" siteSpecific="" platform="All Platforms" bus="Ethernet" manufacturer="none" reference=""/>
-    </description>
-    <classProperties name="clsprop2" description="">
-      <type xsi:type="pogoDsl:StringType"/>
-      <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
-    </classProperties>
-    <deviceProperties name="devprop1" description="">
-      <type xsi:type="pogoDsl:StringType"/>
-      <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
-    </deviceProperties>
-    <deviceProperties name="devprop2" description="">
-      <type xsi:type="pogoDsl:StringType"/>
-      <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
-    </deviceProperties>
-    <commands name="State" description="This command gets the device state (stored in its device_state data member) and returns it to the caller." execMethod="dev_state" displayLevel="OPERATOR" polledPeriod="0">
-      <argin description="none">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argin>
-      <argout description="Device state">
-        <type xsi:type="pogoDsl:StateType"/>
-      </argout>
-      <status abstract="true" inherited="true" concrete="true"/>
-    </commands>
-    <commands name="Status" description="This command gets the device status (stored in its device_status data member) and returns it to the caller." execMethod="dev_status" displayLevel="OPERATOR" polledPeriod="0">
-      <argin description="none">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argin>
-      <argout description="Device status">
-        <type xsi:type="pogoDsl:ConstStringType"/>
-      </argout>
-      <status abstract="true" inherited="true" concrete="true"/>
-    </commands>
-    <commands name="cmd1" description="" execMethod="cmd1" displayLevel="OPERATOR" polledPeriod="0" isDynamic="false">
-      <argin description="">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argin>
-      <argout description="">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argout>
-      <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
-    </commands>
-    <commands name="cmd2" description="" execMethod="cmd2" displayLevel="OPERATOR" polledPeriod="0" isDynamic="false">
-      <argin description="">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argin>
-      <argout description="">
-        <type xsi:type="pogoDsl:VoidType"/>
-      </argout>
-      <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
-    </commands>
-    <attributes name="attr1" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false">
-      <dataType xsi:type="pogoDsl:DoubleType"/>
-      <dataReadyEvent fire="false" libCheckCriteria="true"/>
-      <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
-      <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
-    </attributes>
-    <attributes name="attr2" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false">
-      <dataType xsi:type="pogoDsl:DoubleType"/>
-      <dataReadyEvent fire="false" libCheckCriteria="true"/>
-      <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
-      <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
-    </attributes>
-    <preferences docHome="./doc_html" makefileHome="$(TANGO_HOME)"/>
-  </classes>
-</pogoDsl:PogoSystem>
diff --git a/setup.py b/setup.py
index c782eb94835b6eede4711f6ebe8c6d339a2401e5..a2d012cc825b9037f7fa6dc910ff98750bd48807 100644
--- a/setup.py
+++ b/setup.py
@@ -1,16 +1,24 @@
 #!/usr/bin/env python
 
+import os
 import sys
 
 from setuptools import setup, find_packages
 
+setup_dir = os.path.dirname(os.path.abspath(__file__))
+release_filename = os.path.join(setup_dir, 'skabase', 'release.py')
+exec(open(release_filename).read())
+
 # prevent unnecessary installation of pytest-runner
 needs_pytest = {'pytest', 'test', 'ptr'}.intersection(sys.argv)
 pytest_runner = ['pytest-runner'] if needs_pytest else []
 
-setup(name="lmc_base_classes",
-      description="Element Base Classes - Evolutionary Prototype",
-      author="SKA Team",
+setup(name=name,
+      description=description,
+      version=version,
+      author=author,
+      author_email=author_email,
+      license=license,
       packages=find_packages(),
       include_package_data=True,
       scripts=["scripts/gen_csv_info.py",
@@ -30,7 +38,8 @@ setup(name="lmc_base_classes",
       setup_requires=[] + pytest_runner,
       install_requires=[
           "enum34",
-          "argparse"
+          "argparse",
+          "future"
       ],
       tests_require=[
           "coverage",
diff --git a/skabase/SKAAlarmHandler/SKAAlarmHandler/SKAAlarmHandler.py b/skabase/SKAAlarmHandler/SKAAlarmHandler.py
similarity index 92%
rename from skabase/SKAAlarmHandler/SKAAlarmHandler/SKAAlarmHandler.py
rename to skabase/SKAAlarmHandler/SKAAlarmHandler.py
index 7f575aab99fa0222bc30bbbb5326c3c07f038bff..c7af9e51e094a1bbc7ecf4d1fd02d87f3e7bf80e 100644
--- a/skabase/SKAAlarmHandler/SKAAlarmHandler/SKAAlarmHandler.py
+++ b/skabase/SKAAlarmHandler/SKAAlarmHandler.py
@@ -15,19 +15,30 @@ attribute values and quality factors, and are separate from the "built-in" TANGO
 # tango imports
 from tango import DebugIt
 from tango.server import run, DeviceMeta, attribute, command, device_property
-from SKABaseDevice import SKABaseDevice
+
 # Additional import
 # PROTECTED REGION ID(SKAAlarmHandler.additionnal_import) ENABLED START #
+#standard import
+import os
+import sys
+from future.utils import with_metaclass
+
+# SKA specific imports\
+from skabase import release
+
+file_path = os.path.dirname(os.path.abspath(__file__))
+basedevice_path = os.path.abspath(os.path.join(file_path, os.pardir)) + "/SKABaseDevice"
+sys.path.insert(0, basedevice_path)
+from SKABaseDevice import SKABaseDevice
 # PROTECTED REGION END #    //  SKAAlarmHandler.additionnal_import
 
 __all__ = ["SKAAlarmHandler", "main"]
 
 
-class SKAAlarmHandler(SKABaseDevice):
+class SKAAlarmHandler(with_metaclass(DeviceMeta, SKABaseDevice)):
     """
     A generic base device for Alarms for SKA.
     """
-    __metaclass__ = DeviceMeta
     # PROTECTED REGION ID(SKAAlarmHandler.class_variable) ENABLED START #
     # PROTECTED REGION END #    //  SKAAlarmHandler.class_variable
 
@@ -90,6 +101,10 @@ class SKAAlarmHandler(SKABaseDevice):
 
     def init_device(self):
         SKABaseDevice.init_device(self)
+        # TODO: maintain single version file.
+        self._build_state = '{}, {}, {}'.format(release.name, release.version,
+                                                release.description)
+        self._version_id = release.version
         # PROTECTED REGION ID(SKAAlarmHandler.init_device) ENABLED START #
         # PROTECTED REGION END #    //  SKAAlarmHandler.init_device
 
diff --git a/skabase/SKAAlarmHandler/SKAAlarmHandler/__init__.py b/skabase/SKAAlarmHandler/SKAAlarmHandler/__init__.py
deleted file mode 100644
index b5a2e1d3524295ae4f476044fb5ff248bbf1d0f5..0000000000000000000000000000000000000000
--- a/skabase/SKAAlarmHandler/SKAAlarmHandler/__init__.py
+++ /dev/null
@@ -1,20 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKAAlarmHandler project
-#
-#
-#
-
-"""SKAAlarmHandler
-
-A generic base device for Alarms for SKA. It exposes SKA alarms and SKA alerts as TANGO attributes.
-SKA Alarms and SKA/Element Alerts are rules-based configurable conditions that can be defined over multiple
-attribute values and quality factors, and are separate from the "built-in" TANGO attribute alarms.
-"""
-
-from . import release
-from .SKAAlarmHandler import SKAAlarmHandler, main
-
-__version__ = release.version
-__version_info__ = release.version_info
-__author__ = release.author
diff --git a/skabase/SKAAlarmHandler/SKAAlarmHandler/__main__.py b/skabase/SKAAlarmHandler/SKAAlarmHandler/__main__.py
deleted file mode 100644
index c4209966a57e6c588aba62973840d7c0576299e8..0000000000000000000000000000000000000000
--- a/skabase/SKAAlarmHandler/SKAAlarmHandler/__main__.py
+++ /dev/null
@@ -1,13 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKAAlarmHandler project
-#
-#
-#
-
-""" __main__
-Main module of SKAAlarmHandler base class.
-"""
-
-from SKAAlarmHandler import main
-main()
diff --git a/skabase/SKAAlarmHandler/SKAAlarmHandler/release.py b/skabase/SKAAlarmHandler/SKAAlarmHandler/release.py
deleted file mode 100644
index b4c262ceea6975065924bbc723f585c37997ea7a..0000000000000000000000000000000000000000
--- a/skabase/SKAAlarmHandler/SKAAlarmHandler/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKAAlarmHandler project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skaalarmhandler"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """A generic base device for Alarms for SKA."""
-author = "cam"
-author_email = "cam at ska.ac.za"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKAAlarmHandler/__init__.py b/skabase/SKAAlarmHandler/__init__.py
index c9ee01f363065c69818132d0783d01b8e708648c..479812ee9ad299f86873981d3ddd937323f71212 100644
--- a/skabase/SKAAlarmHandler/__init__.py
+++ b/skabase/SKAAlarmHandler/__init__.py
@@ -1,16 +1,19 @@
 # -*- coding: utf-8 -*-
 #
-# This file is part of the SKABaseDevice project
+# This file is part of the SKAAlarmHandler project
 #
 #
 #
 
-"""SKABASE
+"""SKAAlarmHandler
 
-A generic base device for SKA.
+A generic base device for Alarms for SKA. It exposes SKA alarms and SKA alerts as TANGO attributes.
+SKA Alarms and SKA/Element Alerts are rules-based configurable conditions that can be defined over multiple
+attribute values and quality factors, and are separate from the "built-in" TANGO attribute alarms.
 """
 
-from . import release
+__all__ = ["SKAAlarmHandler", "main"]
+from skabase import release
 from .SKAAlarmHandler import SKAAlarmHandler, main
 
 __version__ = release.version
diff --git a/skabase/SKAAlarmHandler/__main__.py b/skabase/SKAAlarmHandler/__main__.py
index b4f4b1511fd66060c11a8cd6a71a9d259881575c..83494218ee8ea97c8417dd0978b8c2fb3988475f 100644
--- a/skabase/SKAAlarmHandler/__main__.py
+++ b/skabase/SKAAlarmHandler/__main__.py
@@ -1,9 +1,13 @@
 # -*- coding: utf-8 -*-
 #
-# This file is part of the SKABaseDevice project
+# This file is part of the SKAAlarmHandler project
 #
 #
 #
 
-from SKAAlarmHandler import main
+""" __main__
+Main module of SKAAlarmHandler base class.
+"""
+from __future__ import absolute_import
+from .SKAAlarmHandler import main
 main()
diff --git a/skabase/SKAAlarmHandler/release.py b/skabase/SKAAlarmHandler/release.py
deleted file mode 100644
index fccfedc2f617bdb3c9fd7ff9c22c91267fba95c6..0000000000000000000000000000000000000000
--- a/skabase/SKAAlarmHandler/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKABaseDevice project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skaalarmhandler"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """A generic base device for SKA."""
-author = "cam"
-author_email = "cam at ska.ac.za"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKAAlarmHandler/setup.py b/skabase/SKAAlarmHandler/setup.py
deleted file mode 100644
index af4570cbe9cc131284fb62da3c19578c3e9ff386..0000000000000000000000000000000000000000
--- a/skabase/SKAAlarmHandler/setup.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKAAlarmHandler project
-#
-#
-#
-"""Setup file for SKAAlarmHandler base class"""
-import os
-import sys
-from setuptools import setup
-
-setup_dir = os.path.dirname(os.path.abspath(__file__))
-
-# make sure we use latest info from local code
-sys.path.insert(0, setup_dir)
-
-readme_filename = os.path.join(setup_dir, 'README.rst')
-with open(readme_filename) as file:
-    long_description = file.read()
-
-release_filename = os.path.join(setup_dir, 'SKAAlarmHandler', 'release.py')
-exec(open(release_filename).read())
-
-pack = ['SKAAlarmHandler']
-
-setup(name=name,
-      version=version,
-      description='A generic base device for Alarms for SKA.',
-      packages=pack,
-      include_package_data=True,
-      test_suite="test",
-      entry_points={'console_scripts':['SKAAlarmHandler = SKAAlarmHandler:main']},
-      author='cam',
-      author_email='cam at ska.ac.za',
-      license='BSD-3-Clause',
-      long_description=long_description,
-      url='www.tango-controls.org',
-      platforms="All Platforms"
-      )
diff --git a/skabase/SKAAlarmHandler/test/SKAAlarmHandler_test.py b/skabase/SKAAlarmHandler/test/SKAAlarmHandler_test.py
index da41e12bef28896088e897fc22f8d19617de1480..68f3479d4d3f597b077335e0c11bea482ca80b71 100644
--- a/skabase/SKAAlarmHandler/test/SKAAlarmHandler_test.py
+++ b/skabase/SKAAlarmHandler/test/SKAAlarmHandler_test.py
@@ -9,6 +9,7 @@
 """Contain the tests for the SKAAlarmHandler."""
 
 # Path
+from builtins import object
 import sys
 import os
 path = os.path.join(os.path.dirname(__file__), os.pardir)
@@ -17,6 +18,7 @@ sys.path.insert(0, os.path.abspath(path))
 # Imports
 import pytest
 from tango import DevState
+import re
 
 # PROTECTED REGION ID(SKAAlarmHandler.test_additional_imports) ENABLED START #
 # PROTECTED REGION END #    //  SKAAlarmHandler.test_additional_imports
@@ -140,7 +142,11 @@ class TestSKAAlarmHandler(object):
     def test_GetVersionInfo(self, tango_context):
         """Test for GetVersionInfo"""
         # PROTECTED REGION ID(SKAAlarmHandler.test_GetVersionInfo) ENABLED START #
-        assert tango_context.device.GetVersionInfo() == [""]
+        versionPattern = re.compile(
+            r'SKAAlarmHandler, lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope.')
+        versionInfo = tango_context.device.GetVersionInfo()
+        assert (re.match(versionPattern, versionInfo[0])) != None
         # PROTECTED REGION END #    //  SKAAlarmHandler.test_GetVersionInfo
 
 
@@ -189,7 +195,10 @@ class TestSKAAlarmHandler(object):
     def test_buildState(self, tango_context):
         """Test for buildState"""
         # PROTECTED REGION ID(SKAAlarmHandler.test_buildState) ENABLED START #
-        assert tango_context.device.buildState == ''
+        buildPattern = re.compile(
+            r'lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope')
+        assert (re.match(buildPattern, tango_context.device.buildState)) != None
         # PROTECTED REGION END #    //  SKAAlarmHandler.test_buildState
 
     # PROTECTED REGION ID(SKAAlarmHandler.test_versionId_decorators) ENABLED START #
@@ -197,7 +206,8 @@ class TestSKAAlarmHandler(object):
     def test_versionId(self, tango_context):
         """Test for versionId"""
         # PROTECTED REGION ID(SKAAlarmHandler.test_versionId) ENABLED START #
-        assert tango_context.device.versionId == ''
+        versionIdPattern = re.compile(r'[0-9].[0-9].[0-9]')
+        assert (re.match(versionIdPattern, tango_context.device.versionId)) != None
         # PROTECTED REGION END #    //  SKAAlarmHandler.test_versionId
 
     # PROTECTED REGION ID(SKAAlarmHandler.test_centralLoggingLevel_decorators) ENABLED START #
diff --git a/skabase/SKABaseDevice/SKABaseDevice/SKABaseDevice.py b/skabase/SKABaseDevice/SKABaseDevice.py
similarity index 93%
rename from skabase/SKABaseDevice/SKABaseDevice/SKABaseDevice.py
rename to skabase/SKABaseDevice/SKABaseDevice.py
index a59eb01b4ca6fb441e631d0ee798b48483c9b741..bc96951858732ae207ee23acdc120a508ae71074 100644
--- a/skabase/SKABaseDevice/SKABaseDevice/SKABaseDevice.py
+++ b/skabase/SKABaseDevice/SKABaseDevice.py
@@ -5,49 +5,57 @@
 #
 #
 
-""" SKABASE
-
-A generic base device for SKA. It exposes the generic attributes, properties and commands of an SKA device.
+"""A generic base device for SKA. It exposes the generic attributes,
+properties and commands of an SKA device.
 """
+from __future__ import print_function
+from __future__ import absolute_import
 
 # tango imports
 import tango
 from tango import DebugIt
 from tango.server import run, Device, DeviceMeta, attribute, command, device_property
 from tango import AttrQuality, AttrWriteType
+from tango import DeviceProxy, DevFailed
 # Additional import
 # PROTECTED REGION ID(SKABaseDevice.additionnal_import) ENABLED START #
-import logging
+# standard imports
+import os
+import sys
+from future.utils import with_metaclass
 import json
-from tango import DeviceProxy, DevFailed
-import logging.handlers
-from logging.handlers import SysLogHandler
 
-from skabase.utils import (get_dp_command, exception_manager,
+from future import standard_library
+standard_library.install_aliases()
+from builtins import str
+from builtins import range
+
+# SKA specific imports
+file_path = os.path.dirname(os.path.abspath(__file__))
+auxiliary_path = os.path.abspath(os.path.join(file_path, os.pardir)) + "/auxiliary"
+sys.path.insert(0, auxiliary_path)
+from skabase import release
+from utils import (get_dp_command, exception_manager,
                            tango_type_conversion, coerce_value,
                            get_groups_from_json, get_tango_device_type_id)
 
-from skabase.SKABaseDevice import release
-
-from skabase.faults import GroupDefinitionsError
+from faults import GroupDefinitionsError
+import logging
+import logging.handlers
+from logging.handlers import SysLogHandler
 
 # Initialize logging
 logging.basicConfig()
-# MODULE_LOGGER = logging.getLogger(__name__)
-
 # PROTECTED REGION END #    //  SKABaseDevice.additionnal_import
 
 __all__ = ["SKABaseDevice", "main"]
 
-
-class SKABaseDevice(Device):
+class SKABaseDevice(with_metaclass(DeviceMeta, Device)):
     """
     A generic base device for SKA.
     """
-    __metaclass__ = DeviceMeta
     # PROTECTED REGION ID(SKABaseDevice.class_variable) ENABLED START #
 
-    global logger
     logger = logging.getLogger(__name__)
     syslogs = SysLogHandler(address='/dev/log', facility='syslog')
     formatter = logging.Formatter('%(name)s: %(levelname)s %(module)s %(message)r')
@@ -77,7 +85,7 @@ class SKABaseDevice(Device):
             return device_dict
 
         except Exception as ex:
-            logger.fatal(str(ex), exc_info=True)
+            self.logger.fatal(str(ex), exc_info=True)
             raise
 
     def _parse_argin(self, argin, defaults=None, required=None):
@@ -93,7 +101,7 @@ class SKABaseDevice(Device):
             if argin:
                 args_dict.update(json.loads(argin))
         except ValueError as ex:
-            logger.fatal(str(ex), exc_info=True)
+            self.logger.fatal(str(ex), exc_info=True)
             raise
 
         missing_args = []
@@ -146,16 +154,16 @@ class SKABaseDevice(Device):
             try:
                 attr_dict['min_value'] = attrib.get_min_value()
             except AttributeError as attr_err:
-                logger.info(str(attr_err), exc_info=True)
+                self.logger.info(str(attr_err), exc_info=True)
             except DevFailed as derr:
-                logger.info(str(derr), exc_info=True)
+                self.logger.info(str(derr), exc_info=True)
 
             try:
                 attr_dict['max_value'] = attrib.get_max_value()
             except AttributeError as attr_err:
-                logger.info(str(attr_err), exc_info=True)
+                self.logger.info(str(attr_err), exc_info=True)
             except DevFailed as derr:
-                logger.info(str(derr), exc_info=True)
+                self.logger.info(str(derr), exc_info=True)
 
             attr_dict['readonly'] = (
                 attrib.get_writable() not in [AttrWriteType.READ_WRITE,
@@ -234,19 +242,19 @@ class SKABaseDevice(Device):
         # Storage Level Logging
         if self._storage_logging_level >= int(tango.LogLevel.LOG_FATAL) and dev_log_level == int(
                 tango.LogLevel.LOG_FATAL):
-            logger.fatal(dev_log_msg)
+            self.logger.fatal(dev_log_msg)
         elif self._storage_logging_level >= int(tango.LogLevel.LOG_ERROR) and dev_log_level == int(
                 tango.LogLevel.LOG_ERROR):
-            logger.error(dev_log_msg)
+            self.logger.error(dev_log_msg)
         elif self._storage_logging_level >= int(tango.LogLevel.LOG_WARN) and dev_log_level == int(
                 tango.LogLevel.LOG_WARN):
-            logger.warn(dev_log_msg)
+            self.logger.warn(dev_log_msg)
         elif self._storage_logging_level >= int(tango.LogLevel.LOG_INFO) and dev_log_level == int(
                 tango.LogLevel.LOG_INFO):
-            logger.info(dev_log_msg)
+            self.logger.info(dev_log_msg)
         elif self._storage_logging_level >= int(tango.LogLevel.LOG_DEBUG) and dev_log_level == int(
                 tango.LogLevel.LOG_DEBUG):
-            logger.debug(dev_log_msg)
+            self.logger.debug(dev_log_msg)
         else:
             pass
 
@@ -503,17 +511,17 @@ class SKABaseDevice(Device):
         """
         self._storage_logging_level = value
         if self._storage_logging_level == int(tango.LogLevel.LOG_FATAL):
-            logger.setLevel(logging.FATAL)
+            self.logger.setLevel(logging.FATAL)
         elif self._storage_logging_level == int(tango.LogLevel.LOG_ERROR):
-            logger.setLevel(logging.ERROR)
+            self.logger.setLevel(logging.ERROR)
         elif self._storage_logging_level == int(tango.LogLevel.LOG_WARN):
-            logger.setLevel(logging.WARNING)
+            self.logger.setLevel(logging.WARNING)
         elif self._storage_logging_level == int(tango.LogLevel.LOG_INFO):
-            logger.setLevel(logging.INFO)
+            self.logger.setLevel(logging.INFO)
         elif self._storage_logging_level == int(tango.LogLevel.LOG_DEBUG):
-            logger.setLevel(logging.DEBUG)
+            self.logger.setLevel(logging.DEBUG)
         else:
-            logger.setLevel(logging.DEBUG)
+            self.logger.setLevel(logging.DEBUG)
         # PROTECTED REGION END #    //  SKABaseDevice.storageLoggingLevel_write
 
     def read_healthState(self):
@@ -634,6 +642,11 @@ class SKABaseDevice(Device):
     @DebugIt()
     def ToJson(self, argin):
         # PROTECTED REGION ID(SKABaseDevice.ToJson) ENABLED START #
+        """
+        ToJson method. Not used. To be deleted.
+        :param argin:
+        :return:
+        """
 
         # TBD - see how to use fandango's export_device_to_dict
         with exception_manager(self):
diff --git a/skabase/SKABaseDevice/SKABaseDevice/__init__.py b/skabase/SKABaseDevice/SKABaseDevice/__init__.py
deleted file mode 100644
index 9a7c439319296cd5459f6f57412ec564762b9551..0000000000000000000000000000000000000000
--- a/skabase/SKABaseDevice/SKABaseDevice/__init__.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKABaseDevice project
-#
-#
-#
-
-"""SKABASE
-
-A generic base device for SKA. It exposes the generic attributes, properties and commands of an SKA device.
-"""
-
-from . import release
-from .SKABaseDevice import SKABaseDevice, main
-
-__version__ = release.version
-__version_info__ = release.version_info
-__author__ = release.author
diff --git a/skabase/SKABaseDevice/SKABaseDevice/__main__.py b/skabase/SKABaseDevice/SKABaseDevice/__main__.py
deleted file mode 100644
index 331afb40f70ffe4a8c87ad73e2440c48d009c58a..0000000000000000000000000000000000000000
--- a/skabase/SKABaseDevice/SKABaseDevice/__main__.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKABaseDevice project
-#
-#
-#
-
-from SKABaseDevice import main
-main()
diff --git a/skabase/SKABaseDevice/SKABaseDevice/release.py b/skabase/SKABaseDevice/SKABaseDevice/release.py
deleted file mode 100644
index e126d562b9f40674532b3a2d6ac497885cdd6be7..0000000000000000000000000000000000000000
--- a/skabase/SKABaseDevice/SKABaseDevice/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKABaseDevice project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skabasedevice"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """A generic base device for SKA."""
-author = "cam"
-author_email = "cam at ska.ac.za"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKABaseDevice/__init__.py b/skabase/SKABaseDevice/__init__.py
index ce309149c9e4290abb778217410cea7453e99728..c08726ce1d444d2d1f3be4d17e64ce9afa26161c 100644
--- a/skabase/SKABaseDevice/__init__.py
+++ b/skabase/SKABaseDevice/__init__.py
@@ -5,12 +5,14 @@
 #
 #
 
-"""SKABASE
+"""SKABaseDevice
 
-A generic base device for SKA.
+A generic base device for SKA. It exposes the attributes, properties and commands of
+a device that are common for all the SKA devices.
 """
 
-from . import release
+__all__ = ["SKABaseDevice", "main"]
+from skabase import release
 from .SKABaseDevice import SKABaseDevice, main
 
 __version__ = release.version
diff --git a/skabase/SKABaseDevice/__main__.py b/skabase/SKABaseDevice/__main__.py
index 331afb40f70ffe4a8c87ad73e2440c48d009c58a..ec09fe3f0f8f18414172461514b05055d31e4e27 100644
--- a/skabase/SKABaseDevice/__main__.py
+++ b/skabase/SKABaseDevice/__main__.py
@@ -5,5 +5,6 @@
 #
 #
 
-from SKABaseDevice import main
+from __future__ import absolute_import
+from .SKABaseDevice import main
 main()
diff --git a/skabase/SKABaseDevice/release.py b/skabase/SKABaseDevice/release.py
deleted file mode 100644
index e126d562b9f40674532b3a2d6ac497885cdd6be7..0000000000000000000000000000000000000000
--- a/skabase/SKABaseDevice/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKABaseDevice project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skabasedevice"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """A generic base device for SKA."""
-author = "cam"
-author_email = "cam at ska.ac.za"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKABaseDevice/setup.py b/skabase/SKABaseDevice/setup.py
deleted file mode 100644
index dc4ceb79a538c7cb4d5bdb4690053b8049857a50..0000000000000000000000000000000000000000
--- a/skabase/SKABaseDevice/setup.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKABaseDevice project
-#
-#
-#
-
-import os
-import sys
-from setuptools import setup
-
-setup_dir = os.path.dirname(os.path.abspath(__file__))
-
-# make sure we use latest info from local code
-sys.path.insert(0, setup_dir)
-
-readme_filename = os.path.join(setup_dir, 'README.rst')
-with open(readme_filename) as file:
-    long_description = file.read()
-
-release_filename = os.path.join(setup_dir, 'SKABaseDevice', 'release.py')
-exec(open(release_filename).read())
-
-pack = ['SKABaseDevice']
-
-setup(name=name,
-      version=version,
-      description='A generic base device for SKA.',
-      packages=pack,
-      include_package_data=True,
-      test_suite="test",
-      entry_points={'console_scripts':['SKABaseDevice = SKABaseDevice:main']},
-      author='cam',
-      author_email='cam at ska.ac.za',
-      license='BSD-3-Clause',
-      long_description=long_description,
-      url='www.tango-controls.org',
-      platforms="All Platforms"
-      )
diff --git a/skabase/SKABaseDevice/test/SKABaseDevice_test.py b/skabase/SKABaseDevice/test/SKABaseDevice_test.py
index 2f5551d041a046297ef233a6a5618e27697d08ca..9cd9c9ad97dac2026563bde2a0938ced1b5c8493 100644
--- a/skabase/SKABaseDevice/test/SKABaseDevice_test.py
+++ b/skabase/SKABaseDevice/test/SKABaseDevice_test.py
@@ -9,6 +9,7 @@
 """Contain the tests for the SKABASE."""
 
 # Path
+from builtins import object
 import sys
 import os
 path = os.path.join(os.path.dirname(__file__), os.pardir)
@@ -17,6 +18,7 @@ sys.path.insert(0, os.path.abspath(path))
 # Imports
 import pytest
 from tango import DevState
+import re
 
 # PROTECTED REGION ID(SKABaseDevice.test_additional_imports) ENABLED START #
 # PROTECTED REGION END #    //  SKABaseDevice.test_additional_imports
@@ -89,7 +91,11 @@ class TestSKABaseDevice(object):
     def test_GetVersionInfo(self, tango_context):
         """Test for GetVersionInfo"""
         # PROTECTED REGION ID(SKABaseDevice.test_GetVersionInfo) ENABLED START #
-        assert tango_context.device.GetVersionInfo() == [""]
+        versionPattern = re.compile(
+            r'SKABaseDevice, lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope.')
+        versionInfo = tango_context.device.GetVersionInfo()
+        assert (re.match(versionPattern, versionInfo[0])) != None
         # PROTECTED REGION END #    //  SKABaseDevice.test_GetVersionInfo
 
     # PROTECTED REGION ID(SKABaseDevice.test_Reset_decorators) ENABLED START #
@@ -106,7 +112,10 @@ class TestSKABaseDevice(object):
     def test_buildState(self, tango_context):
         """Test for buildState"""
         # PROTECTED REGION ID(SKABaseDevice.test_buildState) ENABLED START #
-        assert tango_context.device.buildState == ''
+        buildPattern = re.compile(
+            r'lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope')
+        assert (re.match(buildPattern, tango_context.device.buildState)) != None
         # PROTECTED REGION END #    //  SKABaseDevice.test_buildState
 
     # PROTECTED REGION ID(SKABaseDevice.test_versionId_decorators) ENABLED START #
@@ -114,7 +123,8 @@ class TestSKABaseDevice(object):
     def test_versionId(self, tango_context):
         """Test for versionId"""
         # PROTECTED REGION ID(SKABaseDevice.test_versionId) ENABLED START #
-        assert tango_context.device.versionId == ''
+        versionIdPattern = re.compile(r'[0-9].[0-9].[0-9]')
+        assert (re.match(versionIdPattern, tango_context.device.versionId)) != None
         # PROTECTED REGION END #    //  SKABaseDevice.test_versionId
 
     # PROTECTED REGION ID(SKABaseDevice.test_centralLoggingLevel_decorators) ENABLED START #
diff --git a/skabase/SKACapability/SKACapability/SKACapability.py b/skabase/SKACapability/SKACapability.py
similarity index 87%
rename from skabase/SKACapability/SKACapability/SKACapability.py
rename to skabase/SKACapability/SKACapability.py
index 2c1f3625e5a7b6f492f8dfc74af3cbd6c26fd1e3..46eef6cd811e6b40f9cbdc8452f923f340e90ef5 100644
--- a/skabase/SKACapability/SKACapability/SKACapability.py
+++ b/skabase/SKACapability/SKACapability.py
@@ -7,25 +7,38 @@
 
 """ SKACapability
 
-Subarray handling device
+Capability handling device
 """
+from __future__ import print_function
+from __future__ import absolute_import
 
 # tango imports
 from tango import DebugIt
 from tango.server import run, DeviceMeta, attribute, command, device_property
-from SKAObsDevice import SKAObsDevice
+
 # Additional import
 # PROTECTED REGION ID(SKACapability.additionnal_import) ENABLED START #
+# standard import
+import os
+import sys
+from future.utils import with_metaclass
+
+# SKA specific imports
+from skabase import release
+
+file_path = os.path.dirname(os.path.abspath(__file__))
+obs_device_path = os.path.abspath(os.path.join(file_path, os.pardir)) + "/SKAObsDevice"
+sys.path.insert(0, obs_device_path)
+from SKAObsDevice import SKAObsDevice
 # PROTECTED REGION END #    //  SKACapability.additionnal_import
 
 __all__ = ["SKACapability", "main"]
 
 
-class SKACapability(SKAObsDevice):
+class SKACapability(with_metaclass(DeviceMeta, SKAObsDevice)):
     """
     A Subarray handling device. It exposes the instances of configured capabilities.
     """
-    __metaclass__ = DeviceMeta
     # PROTECTED REGION ID(SKACapability.class_variable) ENABLED START #
     # PROTECTED REGION END #    //  SKACapability.class_variable
 
@@ -74,6 +87,9 @@ class SKACapability(SKAObsDevice):
 
     def init_device(self):
         SKAObsDevice.init_device(self)
+        self._build_state = '{}, {}, {}'.format(release.name, release.version,
+                                                release.description)
+        self._version_id = release.version
         # PROTECTED REGION ID(SKACapability.init_device) ENABLED START #
         self._activation_time = 0.0
         self._configured_instances = 0
diff --git a/skabase/SKACapability/SKACapability/__init__.py b/skabase/SKACapability/SKACapability/__init__.py
deleted file mode 100644
index 4ac9b33bc9a300a3aacf0e3da892e381375e6736..0000000000000000000000000000000000000000
--- a/skabase/SKACapability/SKACapability/__init__.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKACapability project
-#
-#
-#
-
-"""SKACapability
-
-A Subarray handling device. It exposes the instances of configured capabilities.
-"""
-
-from . import release
-from .SKACapability import SKACapability, main
-
-__version__ = release.version
-__version_info__ = release.version_info
-__author__ = release.author
diff --git a/skabase/SKACapability/SKACapability/release.py b/skabase/SKACapability/SKACapability/release.py
deleted file mode 100644
index 37c9327fabbe6325d4feaf897237ce99d115f0dc..0000000000000000000000000000000000000000
--- a/skabase/SKACapability/SKACapability/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKACapability project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skacapability"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """Subarray handling device"""
-author = "cam"
-author_email = "cam at ska.ac.za"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKACapability/__init__.py b/skabase/SKACapability/__init__.py
index 48f6794958b23ae29c38c7b25605020f393593fb..c1527cbabef5bb71b532870c6341c8973b3deaa6 100644
--- a/skabase/SKACapability/__init__.py
+++ b/skabase/SKACapability/__init__.py
@@ -7,10 +7,11 @@
 
 """SKACapability
 
-A generic Capability device for SKA.
+A Subarray handling device. It exposes the instances of configured capabilities.
 """
 
-from . import release
+__all__ = ["SKACapability", "main"]
+from skabase import release
 from .SKACapability import SKACapability, main
 
 __version__ = release.version
diff --git a/skabase/SKACapability/SKACapability/__main__.py b/skabase/SKACapability/__main__.py
similarity index 66%
rename from skabase/SKACapability/SKACapability/__main__.py
rename to skabase/SKACapability/__main__.py
index 51582f78cde815b8bbce89915c853f7a2aeee6c2..9ed5adf5c3a463ac22a774de0da95a162f7dc569 100644
--- a/skabase/SKACapability/SKACapability/__main__.py
+++ b/skabase/SKACapability/__main__.py
@@ -5,5 +5,6 @@
 #
 #
 """ __main__ module of the SKACapability base class"""
-from SKACapability import main
+from __future__ import absolute_import
+from .SKACapability import main
 main()
diff --git a/skabase/SKACapability/release.py b/skabase/SKACapability/release.py
deleted file mode 100644
index 145e2735edd32ae12ea7ca64adf955639c84ca4f..0000000000000000000000000000000000000000
--- a/skabase/SKACapability/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKACapability project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skacapability"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """A generic capability device for SKA."""
-author = "cam"
-author_email = "cam at ska.ac.za"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKACapability/setup.py b/skabase/SKACapability/setup.py
deleted file mode 100644
index 960ecf221565c7f6ae44530b7aab86567b301615..0000000000000000000000000000000000000000
--- a/skabase/SKACapability/setup.py
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKACapability project
-#
-#
-#
-
-""" Setup file for SKAcapability base class"""
-
-import os
-import sys
-from setuptools import setup
-
-setup_dir = os.path.dirname(os.path.abspath(__file__))
-
-# make sure we use latest info from local code
-sys.path.insert(0, setup_dir)
-
-readme_filename = os.path.join(setup_dir, 'README.rst')
-with open(readme_filename) as file:
-    long_description = file.read()
-
-release_filename = os.path.join(setup_dir, 'SKACapability', 'release.py')
-exec(open(release_filename).read())
-
-pack = ['SKACapability']
-
-setup(name=name,
-      version=version,
-      description='Subarray handling device',
-      packages=pack,
-      include_package_data=True,
-      test_suite="test",
-      entry_points={'console_scripts':['SKACapability = SKACapability:main']},
-      author='cam',
-      author_email='cam at ska.ac.za',
-      license='BSD-3-Clause',
-      long_description=long_description,
-      url='www.tango-controls.org',
-      platforms="All Platforms"
-      )
diff --git a/skabase/SKACapability/test/SKACapability_test.py b/skabase/SKACapability/test/SKACapability_test.py
index 35fbda823ab087e6157fcebcb5ebbe723f544714..be9aded91c0fdb6a8b53bfe486a226a05c14bb2e 100644
--- a/skabase/SKACapability/test/SKACapability_test.py
+++ b/skabase/SKACapability/test/SKACapability_test.py
@@ -9,6 +9,7 @@
 """Contain the tests for the SKACapability."""
 
 # Path
+from builtins import object
 import sys
 import os
 path = os.path.join(os.path.dirname(__file__), os.pardir)
@@ -17,6 +18,7 @@ sys.path.insert(0, os.path.abspath(path))
 # Imports
 import pytest
 from tango import DevState
+import re
 
 # PROTECTED REGION ID(SKACapability.test_additional_imports) ENABLED START #
 # PROTECTED REGION END #    //  SKACapability.test_additional_imports
@@ -61,7 +63,7 @@ class TestSKACapability(object):
     def test_ObsState(self, tango_context):
         """Test for ObsState"""
         # PROTECTED REGION ID(SKACapability.test_ObsState) ENABLED START #
-        assert tango_context.device.ObsState() == ""
+        assert tango_context.device.ObsState == 0
         # PROTECTED REGION END #    //  SKACapability.test_ObsState
 
     # PROTECTED REGION ID(SKACapability.test_State_decorators) ENABLED START #
@@ -101,7 +103,11 @@ class TestSKACapability(object):
     def test_GetVersionInfo(self, tango_context):
         """Test for GetVersionInfo"""
         # PROTECTED REGION ID(SKACapability.test_GetVersionInfo) ENABLED START #
-        assert tango_context.device.GetVersionInfo() == [""]
+        versionPattern = re.compile(
+            r'SKACapability, lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope.')
+        versionInfo = tango_context.device.GetVersionInfo()
+        assert (re.match(versionPattern, versionInfo[0])) != None
         # PROTECTED REGION END #    //  SKACapability.test_GetVersionInfo
 
     # PROTECTED REGION ID(SKACapability.test_ConfigureInstances_decorators) ENABLED START #
@@ -166,7 +172,10 @@ class TestSKACapability(object):
     def test_buildState(self, tango_context):
         """Test for buildState"""
         # PROTECTED REGION ID(SKACapability.test_buildState) ENABLED START #
-        assert tango_context.device.buildState == ''
+        buildPattern = re.compile(
+            r'lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope')
+        assert (re.match(buildPattern, tango_context.device.buildState)) != None
         # PROTECTED REGION END #    //  SKACapability.test_buildState
 
     # PROTECTED REGION ID(SKACapability.test_versionId_decorators) ENABLED START #
@@ -174,7 +183,8 @@ class TestSKACapability(object):
     def test_versionId(self, tango_context):
         """Test for versionId"""
         # PROTECTED REGION ID(SKACapability.test_versionId) ENABLED START #
-        assert tango_context.device.versionId == ''
+        versionIdPattern = re.compile(r'[0-9].[0-9].[0-9]')
+        assert (re.match(versionIdPattern, tango_context.device.versionId)) != None
         # PROTECTED REGION END #    //  SKACapability.test_versionId
 
     # PROTECTED REGION ID(SKACapability.test_centralLoggingLevel_decorators) ENABLED START #
diff --git a/skabase/SKALogger/SKALogger/SKALogger.py b/skabase/SKALogger/SKALogger.py
similarity index 95%
rename from skabase/SKALogger/SKALogger/SKALogger.py
rename to skabase/SKALogger/SKALogger.py
index cfadfc6aa377d2c79b8555d647d2e8c084e1be2e..fce2fa6a9228db0bcac9aab69d340e2adb60f2c3 100644
--- a/skabase/SKALogger/SKALogger/SKALogger.py
+++ b/skabase/SKALogger/SKALogger.py
@@ -11,18 +11,33 @@
 A generic base device for Logging for SKA. It enables to view on-line logs through the TANGO Logging Services
 and to store logs using Python logging. It configures the log levels of remote logging for selected devices.
 """
+from __future__ import absolute_import
 
 # tango imports
 import tango
 from tango import DebugIt, DeviceProxy
 from tango.server import run, DeviceMeta, command
-from SKABaseDevice import SKABaseDevice
+
 # Additional import
 # PROTECTED REGION ID(SKALogger.additionnal_import) ENABLED START #
+from future.utils import with_metaclass
+from builtins import str
+# standard imports
+import os
+import sys
+
+# SKA specific imports
+from skabase import release
+file_path = os.path.dirname(os.path.abspath(__file__))
+basedevice_path = os.path.abspath(os.path.join(file_path, os.pardir)) + "/SKABaseDevice"
+sys.path.insert(0, basedevice_path)
+from SKABaseDevice import SKABaseDevice
+
+
+# Log related imports
 import logging
 import logging.handlers
 from logging.handlers import SysLogHandler
-from skabase.SKALogger import release
 
 logger_dict = {}
 logging.basicConfig()
@@ -32,17 +47,15 @@ syslog = SysLogHandler(address='/dev/log', facility='syslog')
 formatter = logging.Formatter('%(name)s: %(levelname)s %(module)s %(message)r')
 syslog.setFormatter(formatter)
 logger.addHandler(syslog)
-
 # PROTECTED REGION END #    //  SKALogger.additionnal_import
 
 __all__ = ["SKALogger", "main"]
 
 
-class SKALogger(SKABaseDevice):
+class SKALogger(with_metaclass(DeviceMeta, SKABaseDevice)):
     """
     A generic base device for Logging for SKA.
     """
-    __metaclass__ = DeviceMeta
     # PROTECTED REGION ID(SKALogger.class_variable) ENABLED START #
     # PROTECTED REGION END #    //  SKALogger.class_variable
 
diff --git a/skabase/SKALogger/SKALogger/__init__.py b/skabase/SKALogger/SKALogger/__init__.py
deleted file mode 100644
index d0495a120f4e23d728890c6cca2ac6b2a36bcde6..0000000000000000000000000000000000000000
--- a/skabase/SKALogger/SKALogger/__init__.py
+++ /dev/null
@@ -1,20 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKALogger project
-#
-#
-#
-
-
-"""SKALogger
-
-A generic base device for Logging for SKA. It enables to view on-line logs through the TANGO Logging Services
-and to store logs using Python logging. It configures the log levels of remote logging for selected devices.
-"""
-
-from . import release
-from .SKALogger import SKALogger, main
-
-__version__ = release.version
-__version_info__ = release.version_info
-__author__ = release.author
diff --git a/skabase/SKALogger/SKALogger/release.py b/skabase/SKALogger/SKALogger/release.py
deleted file mode 100644
index ebb2cd7d5be19c1cf17f6075fcdfbee46659966b..0000000000000000000000000000000000000000
--- a/skabase/SKALogger/SKALogger/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKALogger project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skalogger"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """A generic base device for Logging for SKA."""
-author = "lochanb.ska"
-author_email = "lochanb.ska at gmail.com"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKALogger/__init__.py b/skabase/SKALogger/__init__.py
index 523dcf6c55c09334c3573f63b4126625e674b0a2..4948b3a9b828c2e625770a95b3ee752495ecc9f6 100644
--- a/skabase/SKALogger/__init__.py
+++ b/skabase/SKALogger/__init__.py
@@ -5,12 +5,16 @@
 #
 #
 
+
 """SKALogger
 
-A generic Logger device for SKA.
+A generic base device for Logging for SKA. It enables to view on-line logs through the TANGO Logging Services
+and to store logs using Python logging. It configures the log levels of remote logging for selected devices.
 """
 
-from . import release
+__all__ = ["SKALogger", "main"]
+
+from skabase import release
 from .SKALogger import SKALogger, main
 
 __version__ = release.version
diff --git a/skabase/SKALogger/SKALogger/__main__.py b/skabase/SKALogger/__main__.py
similarity index 56%
rename from skabase/SKALogger/SKALogger/__main__.py
rename to skabase/SKALogger/__main__.py
index 423342933c4a0392e82fabcf1f4e5fe21e13d3db..0f01a846eab9898b5d269cf0b75e210416a39656 100644
--- a/skabase/SKALogger/SKALogger/__main__.py
+++ b/skabase/SKALogger/__main__.py
@@ -6,5 +6,6 @@
 #
 
 
-from SKALogger import main
+from __future__ import absolute_import
+from .SKALogger import main
 main()
diff --git a/skabase/SKALogger/release.py b/skabase/SKALogger/release.py
deleted file mode 100644
index 5b4d5a73bb14eb8385d8a8c41a83762209302eab..0000000000000000000000000000000000000000
--- a/skabase/SKALogger/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKALogger project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skalogger"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """A generic logger device for SKA."""
-author = "cam"
-author_email = "cam at ska.ac.za"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKALogger/setup.py b/skabase/SKALogger/setup.py
deleted file mode 100644
index 9428bdfaf32b8b86a4215a71f0d95a6e6acae355..0000000000000000000000000000000000000000
--- a/skabase/SKALogger/setup.py
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKALogger project
-#
-#
-#
-
-
-import os
-import sys
-from setuptools import setup
-
-setup_dir = os.path.dirname(os.path.abspath(__file__))
-
-# make sure we use latest info from local code
-sys.path.insert(0, setup_dir)
-
-readme_filename = os.path.join(setup_dir, 'README.rst')
-with open(readme_filename) as file:
-    long_description = file.read()
-
-release_filename = os.path.join(setup_dir, 'SKALogger', 'release.py')
-exec(open(release_filename).read())
-
-pack = ['SKALogger']
-
-setup(name=name,
-      version=version,
-      description='A generic base device for Logging for SKA.',
-      packages=pack,
-      include_package_data=True,
-      test_suite="test",
-      entry_points={'console_scripts':['SKALogger = SKALogger:main']},
-      author='lochanb.ska',
-      author_email='lochanb.ska at gmail.com',
-      license='BSD-3-Clause',
-      long_description=long_description,
-      url='www.tango-controls.org',
-      platforms="All Platforms"
-      )
diff --git a/skabase/SKALogger/test/SKALogger_test.py b/skabase/SKALogger/test/SKALogger_test.py
index 0d1050f3df46100bfa5a3f068ac690f4a7e052bf..c2e3b841086bbc304714756222b8c2151555760a 100644
--- a/skabase/SKALogger/test/SKALogger_test.py
+++ b/skabase/SKALogger/test/SKALogger_test.py
@@ -9,6 +9,7 @@
 """Contain the tests for the SKALogger."""
 
 # Path
+from builtins import object
 import sys
 import os
 
@@ -145,7 +146,8 @@ class TestSKALogger(object):
         """Test for GetVersionInfo"""
         # PROTECTED REGION ID(SKALogger.test_GetVersionInfo) ENABLED START #
         versionPattern = re.compile(
-            r'SKALogger, tangods-skalogger, [0-9].[0-9].[0-9], A generic logger device for SKA')
+            r'SKALogger, lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope.')
         versionInfo = tango_context.device.GetVersionInfo()
         assert (re.match(versionPattern, versionInfo[0])) != None
         # PROTECTED REGION END #    //  SKALogger.test_GetVersionInfo
@@ -163,7 +165,10 @@ class TestSKALogger(object):
     def test_buildState(self, tango_context):
         """Test for buildState"""
         # PROTECTED REGION ID(SKALogger.test_buildState) ENABLED START #
-        assert tango_context.device.buildState == 'tangods-skalogger, 1.0.0, A generic logger device for SKA.'
+        buildPattern = re.compile(
+            r'lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope')
+        assert (re.match(buildPattern, tango_context.device.buildState)) != None
         # PROTECTED REGION END #    //  SKALogger.test_buildState
 
     # PROTECTED REGION ID(SKALogger.test_versionId_decorators) ENABLED START #
@@ -171,7 +176,8 @@ class TestSKALogger(object):
     def test_versionId(self, tango_context):
         """Test for versionId"""
         # PROTECTED REGION ID(SKALogger.test_versionId) ENABLED START #
-        assert tango_context.device.versionId == '1.0.0'
+        versionIdPattern = re.compile(r'[0-9].[0-9].[0-9]')
+        assert (re.match(versionIdPattern, tango_context.device.versionId)) != None
         # PROTECTED REGION END #    //  SKALogger.test_versionId
 
     # PROTECTED REGION ID(SKALogger.test_centralLoggingLevel_decorators) ENABLED START #
diff --git a/skabase/SKAMaster/SKAMaster/SKAMaster.py b/skabase/SKAMaster/SKAMaster.py
similarity index 87%
rename from skabase/SKAMaster/SKAMaster/SKAMaster.py
rename to skabase/SKAMaster/SKAMaster.py
index abe564dc59cc254f387f8ec4c0661b5711bbceff..23e6c94be0db1eb81436596176788cfa349dbff7 100644
--- a/skabase/SKAMaster/SKAMaster/SKAMaster.py
+++ b/skabase/SKAMaster/SKAMaster.py
@@ -9,27 +9,41 @@
 
 A master test
 """
+from __future__ import print_function
+from __future__ import absolute_import
 
 # tango imports
 from tango import DebugIt
 from tango.server import run, DeviceMeta, attribute, command, device_property
-from SKABaseDevice import SKABaseDevice
+
 # Additional import
 # PROTECTED REGION ID(SKAMaster.additionnal_import) ENABLED START #
-from itertools import izip
+from builtins import zip
+import os
+import sys
+from future.utils import with_metaclass
+from itertools import zip_longest as zip
+
+# SKA specific imports
+from skabase import release
+
+file_path = os.path.dirname(os.path.abspath(__file__))
+basedevice_path = os.path.abspath(os.path.join(file_path, os.pardir)) + "/SKABaseDevice"
+sys.path.insert(0, basedevice_path)
+from SKABaseDevice import SKABaseDevice
 
-from skabase.utils import (validate_capability_types, validate_input_sizes,
+from utils import (validate_capability_types, validate_input_sizes,
                            convert_dict_to_list)
+
 # PROTECTED REGION END #    //  SKAMaster.additionnal_import
 
 __all__ = ["SKAMaster", "main"]
 
 
-class SKAMaster(SKABaseDevice):
+class SKAMaster(with_metaclass(DeviceMeta, SKABaseDevice)):
     """
     A master test
     """
-    __metaclass__ = DeviceMeta
     # PROTECTED REGION ID(SKAMaster.class_variable) ENABLED START #
     # PROTECTED REGION END #    //  SKAMaster.class_variable
 
@@ -85,7 +99,9 @@ class SKAMaster(SKABaseDevice):
     def init_device(self):
         SKABaseDevice.init_device(self)
         # PROTECTED REGION ID(SKAMaster.init_device) ENABLED START #
-
+        self._build_state = '{}, {}, {}'.format(release.name, release.version,
+                                                release.description)
+        self._version_id = release.version
         # Initialize attribute values.
         self._element_logger_address = ""
         self._element_alarm_address = ""
@@ -169,9 +185,9 @@ class SKAMaster(SKABaseDevice):
         capabilities_instances, capability_types = argin
         validate_input_sizes(command_name, argin)
         validate_capability_types(command_name, capability_types,
-                                  self._max_capabilities.keys())
+                                  list(self._max_capabilities.keys()))
 
-        for capability_type, capability_instances in izip(
+        for capability_type, capability_instances in zip(
                 capability_types, capabilities_instances):
             if not self._available_capabilities[capability_type] >= capability_instances:
                 return False
diff --git a/skabase/SKAMaster/SKAMaster/__init__.py b/skabase/SKAMaster/SKAMaster/__init__.py
deleted file mode 100644
index 8abc40521f4c9bdc3c8a703a1aca72abd1c70244..0000000000000000000000000000000000000000
--- a/skabase/SKAMaster/SKAMaster/__init__.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKAMaster project
-#
-#
-#
-
-"""SKAMaster
-
-A master test
-"""
-
-from . import release
-from .SKAMaster import SKAMaster, main
-
-__version__ = release.version
-__version_info__ = release.version_info
-__author__ = release.author
diff --git a/skabase/SKAMaster/SKAMaster/__main__.py b/skabase/SKAMaster/SKAMaster/__main__.py
deleted file mode 100644
index f848740883ea539bed7d42344dc1382bb40b72f6..0000000000000000000000000000000000000000
--- a/skabase/SKAMaster/SKAMaster/__main__.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKAMaster project
-#
-#
-#
-
-from SKAMaster import main
-main()
diff --git a/skabase/SKAMaster/SKAMaster/release.py b/skabase/SKAMaster/SKAMaster/release.py
deleted file mode 100644
index 06b3b2571ab8cbed9f80bdff21f5a7f6b41a0dbd..0000000000000000000000000000000000000000
--- a/skabase/SKAMaster/SKAMaster/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKAMaster project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skamaster"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """A master test"""
-author = "cam"
-author_email = "cam at ska.ac.za"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKAMaster/__init__.py b/skabase/SKAMaster/__init__.py
index b1fef9b9b7948a9460493274ace7424634df45c1..4afa5cb24ac35704a27982e9a161dd443e9a9e6d 100644
--- a/skabase/SKAMaster/__init__.py
+++ b/skabase/SKAMaster/__init__.py
@@ -5,12 +5,14 @@
 #
 #
 
-"""
+"""SKAMaster
 
-A master test
+A generic master device for SKA Element Master.
 """
 
-from . import release
+__all__ = ["SKAMaster", "main"]
+
+from skabase import release
 from .SKAMaster import SKAMaster, main
 
 __version__ = release.version
diff --git a/skabase/SKAMaster/__main__.py b/skabase/SKAMaster/__main__.py
index f848740883ea539bed7d42344dc1382bb40b72f6..3896a7b6d2115b6e81b89f9c0c20d1b413789956 100644
--- a/skabase/SKAMaster/__main__.py
+++ b/skabase/SKAMaster/__main__.py
@@ -5,5 +5,6 @@
 #
 #
 
-from SKAMaster import main
+from __future__ import absolute_import
+from .SKAMaster import main
 main()
diff --git a/skabase/SKAMaster/release.py b/skabase/SKAMaster/release.py
deleted file mode 100644
index 06b3b2571ab8cbed9f80bdff21f5a7f6b41a0dbd..0000000000000000000000000000000000000000
--- a/skabase/SKAMaster/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKAMaster project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skamaster"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """A master test"""
-author = "cam"
-author_email = "cam at ska.ac.za"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKAMaster/setup.py b/skabase/SKAMaster/setup.py
deleted file mode 100644
index ff31136a473ddccc286f5e5f89042717a2bb37c9..0000000000000000000000000000000000000000
--- a/skabase/SKAMaster/setup.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKAMaster project
-#
-#
-#
-
-import os
-import sys
-from setuptools import setup
-
-setup_dir = os.path.dirname(os.path.abspath(__file__))
-
-# make sure we use latest info from local code
-sys.path.insert(0, setup_dir)
-
-readme_filename = os.path.join(setup_dir, 'README.rst')
-with open(readme_filename) as file:
-    long_description = file.read()
-
-release_filename = os.path.join(setup_dir, 'SKAMaster', 'release.py')
-exec(open(release_filename).read())
-
-pack = ['SKAMaster']
-
-setup(name=name,
-      version=version,
-      description='A master test',
-      packages=pack,
-      include_package_data=True,
-      test_suite="test",
-      entry_points={'console_scripts':['SKAMaster = SKAMaster:main']},
-      author='cam',
-      author_email='cam at ska.ac.za',
-      license='BSD-3-Clause',
-      long_description=long_description,
-      url='www.tango-controls.org',
-      platforms="All Platforms"
-      )
diff --git a/skabase/SKAMaster/test/SKAMaster_test.py b/skabase/SKAMaster/test/SKAMaster_test.py
index 0189f0352617c97b3993fbae90e3a44a0689053a..f8a7300796c09d534d688460541d45f636c8c59f 100644
--- a/skabase/SKAMaster/test/SKAMaster_test.py
+++ b/skabase/SKAMaster/test/SKAMaster_test.py
@@ -9,6 +9,7 @@
 """Contain the tests for the SKAMaster."""
 
 # Path
+from builtins import object
 import sys
 import os
 path = os.path.join(os.path.dirname(__file__), os.pardir)
@@ -19,6 +20,7 @@ import pytest
 from mock import MagicMock
 
 from tango import DevState
+import re
 
 # PROTECTED REGION ID(SKAMaster.test_additional_imports) ENABLED START #
 # PROTECTED REGION END #    //  SKAMaster.test_additional_imports
@@ -94,7 +96,11 @@ class TestSKAMaster(object):
     def test_GetVersionInfo(self, tango_context):
         """Test for GetVersionInfo"""
         # PROTECTED REGION ID(SKAMaster.test_GetVersionInfo) ENABLED START #
-        assert tango_context.device.GetVersionInfo() == [""]
+        versionPattern = re.compile(
+            r'SKAMaster, lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope.')
+        versionInfo = tango_context.device.GetVersionInfo()
+        assert (re.match(versionPattern, versionInfo[0])) != None
         # PROTECTED REGION END #    //  SKAMaster.test_GetVersionInfo
 
     # PROTECTED REGION ID(SKAMaster.test_isCapabilityAchievable_decorators) ENABLED START #
@@ -151,7 +157,10 @@ class TestSKAMaster(object):
     def test_buildState(self, tango_context):
         """Test for buildState"""
         # PROTECTED REGION ID(SKAMaster.test_buildState) ENABLED START #
-        assert tango_context.device.buildState == ''
+        buildPattern = re.compile(
+            r'lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope')
+        assert (re.match(buildPattern, tango_context.device.buildState)) != None
         # PROTECTED REGION END #    //  SKAMaster.test_buildState
 
     # PROTECTED REGION ID(SKAMaster.test_versionId_decorators) ENABLED START #
@@ -159,7 +168,8 @@ class TestSKAMaster(object):
     def test_versionId(self, tango_context):
         """Test for versionId"""
         # PROTECTED REGION ID(SKAMaster.test_versionId) ENABLED START #
-        assert tango_context.device.versionId == ''
+        versionIdPattern = re.compile(r'[0-9].[0-9].[0-9]')
+        assert (re.match(versionIdPattern, tango_context.device.versionId)) != None
         # PROTECTED REGION END #    //  SKAMaster.test_versionId
 
     # PROTECTED REGION ID(SKAMaster.test_centralLoggingLevel_decorators) ENABLED START #
diff --git a/skabase/SKAObsDevice/SKAObsDevice/SKAObsDevice.py b/skabase/SKAObsDevice/SKAObsDevice.py
similarity index 86%
rename from skabase/SKAObsDevice/SKAObsDevice/SKAObsDevice.py
rename to skabase/SKAObsDevice/SKAObsDevice.py
index 0d9323e79cca4a07fd2f7693db7edcdb8813595c..dcc49bacdc30f31d0ea4818fccf82e592d163233 100644
--- a/skabase/SKAObsDevice/SKAObsDevice/SKAObsDevice.py
+++ b/skabase/SKAObsDevice/SKAObsDevice.py
@@ -10,26 +10,42 @@
 A generic base device for Observations for SKA. It inherits SKABaseDevice class. Any device implementing
 an obsMode will inherit from SKAObsDevice instead of just SKABaseDevice.
 """
+from __future__ import print_function
+from __future__ import absolute_import
 
 # tango imports
 from tango.server import run, DeviceMeta, attribute
-from SKABaseDevice import SKABaseDevice
+
 # Additional import
 # PROTECTED REGION ID(SKAObsDevice.additionnal_import) ENABLED START #
+# standard imports
+import os
+import sys
+from future.utils import with_metaclass
+
+# SKA specific imports
+from skabase import release
+
+file_path = os.path.dirname(os.path.abspath(__file__))
+basedevice_path = os.path.abspath(os.path.join(file_path, os.pardir)) + "/SKABaseDevice"
+sys.path.insert(0, basedevice_path)
+from SKABaseDevice import SKABaseDevice
 # PROTECTED REGION END #    //  SKAObsDevice.additionnal_import
 
 __all__ = ["SKAObsDevice", "main"]
 
 
-class SKAObsDevice(SKABaseDevice):
+class SKAObsDevice(with_metaclass(DeviceMeta, SKABaseDevice)):
     """
     A generic base device for Observations for SKA.
     """
-    __metaclass__ = DeviceMeta
     # PROTECTED REGION ID(SKAObsDevice.class_variable) ENABLED START #
     def __init__(self, *args, **kwargs):
         super(SKAObsDevice, self).__init__(*args, **kwargs)
 
+        self._build_state = '{}, {}, {}'.format(release.name, release.version,
+                                                release.description)
+        self._version_id = release.version
         # Initialize attribute values.
         self._obs_state = 0
         self._obs_mode = 0
diff --git a/skabase/SKAObsDevice/SKAObsDevice/__init__.py b/skabase/SKAObsDevice/SKAObsDevice/__init__.py
deleted file mode 100644
index d2e7b80021c613420e54438c10736254256037e8..0000000000000000000000000000000000000000
--- a/skabase/SKAObsDevice/SKAObsDevice/__init__.py
+++ /dev/null
@@ -1,19 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKAObsDevice project
-#
-#
-#
-
-"""SKAObsDevice
-
-A generic base device for Observations for SKA. It inherits SKABaseDevice class. Any device implementing
-and obsMode will inherit from SKAObsDevice instead of just SKABaseDevice.
-"""
-
-from . import release
-from .SKAObsDevice import SKAObsDevice, main
-
-__version__ = release.version
-__version_info__ = release.version_info
-__author__ = release.author
diff --git a/skabase/SKAObsDevice/SKAObsDevice/__main__.py b/skabase/SKAObsDevice/SKAObsDevice/__main__.py
deleted file mode 100644
index 265bf59e5f785c970a65ce44e69928271a8d5da5..0000000000000000000000000000000000000000
--- a/skabase/SKAObsDevice/SKAObsDevice/__main__.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKAObsDevice project
-#
-#
-#
-
-from SKAObsDevice import main
-main()
diff --git a/skabase/SKAObsDevice/SKAObsDevice/release.py b/skabase/SKAObsDevice/SKAObsDevice/release.py
deleted file mode 100644
index 4ff1cb9a4f480b607dd3a517a4aa982fa0ebd2b8..0000000000000000000000000000000000000000
--- a/skabase/SKAObsDevice/SKAObsDevice/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKAObsDevice project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skaobsdevice"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """A generic base device for Observations for SKA."""
-author = "cam"
-author_email = "cam at ska.ac.za"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKAObsDevice/__init__.py b/skabase/SKAObsDevice/__init__.py
index 71030a92c3a10f741dac4b96429de167c57befcd..b64137ba1dd655be1b4fcd215800922fa187cc97 100644
--- a/skabase/SKAObsDevice/__init__.py
+++ b/skabase/SKAObsDevice/__init__.py
@@ -7,10 +7,12 @@
 
 """SKAObsDevice
 
-A generic base device for Observations for SKA.
+A generic base device for Observations for SKA. It inherits SKABaseDevice class. Any device implementing
+and obsMode will inherit from SKAObsDevice instead of just SKABaseDevice.
 """
 
-from . import release
+__all__ = ["SKAObsDevice", "main"]
+from skabase import release
 from .SKAObsDevice import SKAObsDevice, main
 
 __version__ = release.version
diff --git a/skabase/SKAObsDevice/__main__.py b/skabase/SKAObsDevice/__main__.py
index 265bf59e5f785c970a65ce44e69928271a8d5da5..1cb865bd43ce669e758f4c245fb625af384a487d 100644
--- a/skabase/SKAObsDevice/__main__.py
+++ b/skabase/SKAObsDevice/__main__.py
@@ -5,5 +5,6 @@
 #
 #
 
-from SKAObsDevice import main
+from __future__ import absolute_import
+from .SKAObsDevice import main
 main()
diff --git a/skabase/SKAObsDevice/release.py b/skabase/SKAObsDevice/release.py
deleted file mode 100644
index 4ff1cb9a4f480b607dd3a517a4aa982fa0ebd2b8..0000000000000000000000000000000000000000
--- a/skabase/SKAObsDevice/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKAObsDevice project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skaobsdevice"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """A generic base device for Observations for SKA."""
-author = "cam"
-author_email = "cam at ska.ac.za"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKAObsDevice/setup.py b/skabase/SKAObsDevice/setup.py
deleted file mode 100644
index 20e9c72f3bbad4784204e800310043a7dc799341..0000000000000000000000000000000000000000
--- a/skabase/SKAObsDevice/setup.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKAObsDevice project
-#
-#
-#
-
-import os
-import sys
-from setuptools import setup
-
-setup_dir = os.path.dirname(os.path.abspath(__file__))
-
-# make sure we use latest info from local code
-sys.path.insert(0, setup_dir)
-
-readme_filename = os.path.join(setup_dir, 'README.rst')
-with open(readme_filename) as file:
-    long_description = file.read()
-
-release_filename = os.path.join(setup_dir, 'SKAObsDevice', 'release.py')
-exec(open(release_filename).read())
-
-pack = ['SKAObsDevice']
-
-setup(name=name,
-      version=version,
-      description='A generic base device for Observations for SKA.',
-      packages=pack,
-      include_package_data=True,
-      test_suite="test",
-      entry_points={'console_scripts':['SKAObsDevice = SKAObsDevice:main']},
-      author='cam',
-      author_email='cam at ska.ac.za',
-      license='BSD-3-Clause',
-      long_description=long_description,
-      url='www.tango-controls.org',
-      platforms="All Platforms"
-      )
diff --git a/skabase/SKAObsDevice/test/SKAObsDevice_test.py b/skabase/SKAObsDevice/test/SKAObsDevice_test.py
index a6da61abf6f0e350e658d1fd0f0935e667ea7a40..3c1982aae3233b35a20ceaff0292a172fb68a9a5 100644
--- a/skabase/SKAObsDevice/test/SKAObsDevice_test.py
+++ b/skabase/SKAObsDevice/test/SKAObsDevice_test.py
@@ -9,6 +9,7 @@
 """Contain the tests for the SKAObsDevice."""
 
 # Path
+from builtins import object
 import sys
 import os
 path = os.path.join(os.path.dirname(__file__), os.pardir)
@@ -17,6 +18,7 @@ sys.path.insert(0, os.path.abspath(path))
 # Imports
 import pytest
 from tango import DevState
+import re
 
 # PROTECTED REGION ID(SKAObsDevice.test_additional_imports) ENABLED START #
 # PROTECTED REGION END #    //  SKAObsDevice.test_additional_imports
@@ -57,7 +59,7 @@ class TestSKAObsDevice(object):
     def test_ObsState(self, tango_context):
         """Test for ObsState"""
         # PROTECTED REGION ID(SKAObsDevice.test_ObsState) ENABLED START #
-        assert tango_context.device.ObsState() == ""
+        assert tango_context.device.ObsState == 0
         # PROTECTED REGION END #    //  SKAObsDevice.test_ObsState
 
     # PROTECTED REGION ID(SKAObsDevice.test_State_decorators) ENABLED START #
@@ -97,7 +99,11 @@ class TestSKAObsDevice(object):
     def test_GetVersionInfo(self, tango_context):
         """Test for GetVersionInfo"""
         # PROTECTED REGION ID(SKAObsDevice.test_GetVersionInfo) ENABLED START #
-        assert tango_context.device.GetVersionInfo() == [""]
+        versionPattern = re.compile(
+            r'SKAObsDevice, lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope.')
+        versionInfo = tango_context.device.GetVersionInfo()
+        assert (re.match(versionPattern, versionInfo[0])) != None
         # PROTECTED REGION END #    //  SKAObsDevice.test_GetVersionInfo
 
     # PROTECTED REGION ID(SKAObsDevice.test_Reset_decorators) ENABLED START #
@@ -145,7 +151,10 @@ class TestSKAObsDevice(object):
     def test_buildState(self, tango_context):
         """Test for buildState"""
         # PROTECTED REGION ID(SKAObsDevice.test_buildState) ENABLED START #
-        assert tango_context.device.buildState == ''
+        buildPattern = re.compile(
+            r'lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope')
+        assert (re.match(buildPattern, tango_context.device.buildState)) != None
         # PROTECTED REGION END #    //  SKAObsDevice.test_buildState
 
     # PROTECTED REGION ID(SKAObsDevice.test_versionId_decorators) ENABLED START #
@@ -153,7 +162,8 @@ class TestSKAObsDevice(object):
     def test_versionId(self, tango_context):
         """Test for versionId"""
         # PROTECTED REGION ID(SKAObsDevice.test_versionId) ENABLED START #
-        assert tango_context.device.versionId == ''
+        versionIdPattern = re.compile(r'[0-9].[0-9].[0-9]')
+        assert (re.match(versionIdPattern, tango_context.device.versionId)) != None
         # PROTECTED REGION END #    //  SKAObsDevice.test_versionId
 
     # PROTECTED REGION ID(SKAObsDevice.test_centralLoggingLevel_decorators) ENABLED START #
diff --git a/skabase/SKASubarray/SKASubarray/SKASubarray.py b/skabase/SKASubarray/SKASubarray.py
similarity index 95%
rename from skabase/SKASubarray/SKASubarray/SKASubarray.py
rename to skabase/SKASubarray/SKASubarray.py
index ad47cbca1f55bc7af56a3390946c2f7be373897d..b886cd866812526a0301c413d4b23bdef12241ca 100644
--- a/skabase/SKASubarray/SKASubarray/SKASubarray.py
+++ b/skabase/SKASubarray/SKASubarray.py
@@ -10,29 +10,40 @@
 A SubArray handling device. It allows the assigning/releasing of resources into/from Subarray, configuring
 capabilities, and exposes the related information like assigned resources, configured capabilities, etc.
 """
+from __future__ import print_function
+from __future__ import absolute_import
 
 # tango imports
 from tango import DebugIt
 from tango.server import run, DeviceMeta, attribute, command
 from tango.server import device_property
-from SKAObsDevice import SKAObsDevice
-# Additional import
-# PROTECTED REGION ID(SKASubarray.additionnal_import) ENABLED START #
-import logging
-from itertools import izip
 from tango import DeviceProxy, Except, ErrSeverity, DevState
 
-MODULE_LOGGER = logging.getLogger(__name__)
+# Additional import
+# PROTECTED REGION ID(SKASubarray.additionnal_import) ENABLED START #
+# standard imports
+from builtins import zip
+import os
+import sys
+from future.utils import with_metaclass
+from itertools import zip_longest as zip
+
+# SKA specific imports
+from skabase import release
+
+file_path = os.path.dirname(os.path.abspath(__file__))
+obs_device_path = os.path.abspath(os.path.join(file_path, os.pardir)) + "/SKAObsDevice"
+sys.path.insert(0, obs_device_path)
+from SKAObsDevice import SKAObsDevice
 # PROTECTED REGION END #    //  SKASubarray.additionnal_import
 
 __all__ = ["SKASubarray", "main"]
 
 
-class SKASubarray(SKAObsDevice):
+class SKASubarray(with_metaclass(DeviceMeta, SKAObsDevice)):
     """
     SubArray handling device
     """
-    __metaclass__ = DeviceMeta
     # PROTECTED REGION ID(SKASubarray.class_variable) ENABLED START #
     def _is_command_allowed(self, command_name):
         """Determine whether the command specified by the command_name parameter should
@@ -213,6 +224,9 @@ class SKASubarray(SKAObsDevice):
     def init_device(self):
         SKAObsDevice.init_device(self)
         # PROTECTED REGION ID(SKASubarray.init_device) ENABLED START #
+        self._build_state = '{}, {}, {}'.format(release.name, release.version,
+                                                release.description)
+        self._version_id = release.version
 
         # Initialize attribute values.
         self._activation_time = 0.0
@@ -272,7 +286,7 @@ class SKASubarray(SKAObsDevice):
         """
         configured_capabilities = []
         for capability_type, capability_instances in (
-                self._configured_capabilities.items()):
+                list(self._configured_capabilities.items())):
             configured_capabilities.append(
                 "{}:{}".format(capability_type, capability_instances))
         return sorted(configured_capabilities)
@@ -315,7 +329,7 @@ class SKASubarray(SKAObsDevice):
         self._obs_state = obs_configuring
 
         # Perform the configuration.
-        for capability_instances, capability_type in izip(
+        for capability_instances, capability_type in zip(
                 capabilities_instances, capability_types):
             self._configured_capabilities[capability_type] += capability_instances
 
@@ -358,7 +372,7 @@ class SKASubarray(SKAObsDevice):
 
 
         # Perform the deconfiguration
-        for capability_instances, capability_type in izip(
+        for capability_instances, capability_type in zip(
                 capabilities_instances, capability_types):
             if self._configured_capabilities[capability_type] < int(capability_instances):
                 self._configured_capabilities[capability_type] = 0
diff --git a/skabase/SKASubarray/SKASubarray/__init__.py b/skabase/SKASubarray/SKASubarray/__init__.py
deleted file mode 100644
index a9c80da9684ce6a7470c38e8dc3f53f9dcda2978..0000000000000000000000000000000000000000
--- a/skabase/SKASubarray/SKASubarray/__init__.py
+++ /dev/null
@@ -1,19 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKASubarray project
-#
-#
-#
-
-"""SKASubarray
-
-A SubArray handling device. It allows the assigning/releasing of resources into/from Subarray, configuring
-capabilities, and exposes the related information like assigned resources, configured capabilities, etc.
-"""
-
-from . import release
-from .SKASubarray import SKASubarray, main
-
-__version__ = release.version
-__version_info__ = release.version_info
-__author__ = release.author
diff --git a/skabase/SKASubarray/SKASubarray/release.py b/skabase/SKASubarray/SKASubarray/release.py
deleted file mode 100644
index 134c54c0e72228c30631a080087585677ba37e4d..0000000000000000000000000000000000000000
--- a/skabase/SKASubarray/SKASubarray/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKASubarray project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skasubarray"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """SubArray handling device"""
-author = "cam"
-author_email = "cam at ska.ac.za"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKASubarray/__init__.py b/skabase/SKASubarray/__init__.py
index 7285697e219f3836bbd70c000be957178e8d1247..a66e73d5822f9ff118a3e90a301c3e66bf2bab7d 100644
--- a/skabase/SKASubarray/__init__.py
+++ b/skabase/SKASubarray/__init__.py
@@ -7,10 +7,13 @@
 
 """SKASubarray
 
-A generic Subarray device for SKA.
+A SubArray handling device. It allows the assigning/releasing of resources into/from Subarray, configuring
+capabilities, and exposes the related information like assigned resources, configured capabilities, etc.
 """
 
-from . import release
+__all__ = ["SKASubarray", "main"]
+
+from skabase import release
 from .SKASubarray import SKASubarray, main
 
 __version__ = release.version
diff --git a/skabase/SKASubarray/SKASubarray/__main__.py b/skabase/SKASubarray/__main__.py
similarity index 55%
rename from skabase/SKASubarray/SKASubarray/__main__.py
rename to skabase/SKASubarray/__main__.py
index 3bd2a1584aceb51bece871c85a90a7988d3866d3..ef59ff958c8118b5209a4a0d3aebd88be0ab802e 100644
--- a/skabase/SKASubarray/SKASubarray/__main__.py
+++ b/skabase/SKASubarray/__main__.py
@@ -5,5 +5,6 @@
 #
 #
 
-from SKASubarray import main
+from __future__ import absolute_import
+from .SKASubarray import main
 main()
diff --git a/skabase/SKASubarray/release.py b/skabase/SKASubarray/release.py
deleted file mode 100644
index c7fe60b66b60f6e03a9a95f66a589a265f758292..0000000000000000000000000000000000000000
--- a/skabase/SKASubarray/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKASubarray project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skasubarray"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """A generic subarray device for SKA."""
-author = "cam"
-author_email = "cam at ska.ac.za"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKASubarray/setup.py b/skabase/SKASubarray/setup.py
deleted file mode 100644
index 4e2b8d9fa1304603ed147f090b28290743d08df0..0000000000000000000000000000000000000000
--- a/skabase/SKASubarray/setup.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKASubarray project
-#
-#
-#
-
-import os
-import sys
-from setuptools import setup
-
-setup_dir = os.path.dirname(os.path.abspath(__file__))
-
-# make sure we use latest info from local code
-sys.path.insert(0, setup_dir)
-
-readme_filename = os.path.join(setup_dir, 'README.rst')
-with open(readme_filename) as file:
-    long_description = file.read()
-
-release_filename = os.path.join(setup_dir, 'SKASubarray', 'release.py')
-exec(open(release_filename).read())
-
-pack = ['SKASubarray']
-
-setup(name=name,
-      version=version,
-      description='SubArray handling device',
-      packages=pack,
-      include_package_data=True,
-      test_suite="test",
-      entry_points={'console_scripts':['SKASubarray = SKASubarray:main']},
-      author='cam',
-      author_email='cam at ska.ac.za',
-      license='BSD-3-Clause',
-      long_description=long_description,
-      url='www.tango-controls.org',
-      platforms="All Platforms"
-      )
diff --git a/skabase/SKASubarray/test/SKASubarray_test.py b/skabase/SKASubarray/test/SKASubarray_test.py
index f087e547057ea1143d20e5bc322b76f7a2f3be3f..92d70f92dc6e1ddd9d49a688ac8c7bc4972ec773 100644
--- a/skabase/SKASubarray/test/SKASubarray_test.py
+++ b/skabase/SKASubarray/test/SKASubarray_test.py
@@ -9,6 +9,7 @@
 """Contain the tests for the SKASubarray."""
 
 # Path
+from builtins import object
 import sys
 import os
 path = os.path.join(os.path.dirname(__file__), os.pardir)
@@ -17,6 +18,7 @@ sys.path.insert(0, os.path.abspath(path))
 # Imports
 import pytest
 from tango import DevState
+import re
 
 # PROTECTED REGION ID(SKASubarray.test_additional_imports) ENABLED START #
 # PROTECTED REGION END #    //  SKASubarray.test_additional_imports
@@ -99,7 +101,11 @@ class TestSKASubarray(object):
     def test_GetVersionInfo(self, tango_context):
         """Test for GetVersionInfo"""
         # PROTECTED REGION ID(SKASubarray.test_GetVersionInfo) ENABLED START #
-        assert tango_context.device.GetVersionInfo() == [""]
+        versionPattern = re.compile(
+            r'SKASubarray, lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope.')
+        versionInfo = tango_context.device.GetVersionInfo()
+        assert (re.match(versionPattern, versionInfo[0])) != None
         # PROTECTED REGION END #    //  SKASubarray.test_GetVersionInfo
 
     # PROTECTED REGION ID(SKASubarray.test_Status_decorators) ENABLED START #
@@ -147,7 +153,7 @@ class TestSKASubarray(object):
     def test_ObsState(self, tango_context):
         """Test for ObsState"""
         # PROTECTED REGION ID(SKASubarray.test_ObsState) ENABLED START #
-        assert tango_context.device.ObsState() == ""
+        assert tango_context.device.ObsState == 0
         # PROTECTED REGION END #    //  SKASubarray.test_ObsState
 
     # PROTECTED REGION ID(SKASubarray.test_Pause_decorators) ENABLED START #
@@ -227,7 +233,10 @@ class TestSKASubarray(object):
     def test_buildState(self, tango_context):
         """Test for buildState"""
         # PROTECTED REGION ID(SKASubarray.test_buildState) ENABLED START #
-        assert tango_context.device.buildState == ''
+        buildPattern = re.compile(
+            r'lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope')
+        assert (re.match(buildPattern, tango_context.device.buildState)) != None
         # PROTECTED REGION END #    //  SKASubarray.test_buildState
 
     # PROTECTED REGION ID(SKASubarray.test_centralLoggingLevel_decorators) ENABLED START #
@@ -323,7 +332,8 @@ class TestSKASubarray(object):
     def test_versionId(self, tango_context):
         """Test for versionId"""
         # PROTECTED REGION ID(SKASubarray.test_versionId) ENABLED START #
-        assert tango_context.device.versionId == ''
+        versionIdPattern = re.compile(r'[0-9].[0-9].[0-9]')
+        assert (re.match(versionIdPattern, tango_context.device.versionId)) != None
         # PROTECTED REGION END #    //  SKASubarray.test_versionId
 
     # PROTECTED REGION ID(SKASubarray.test_assignedResources_decorators) ENABLED START #
diff --git a/skabase/SKATelState/SKATelState/SKATelState.py b/skabase/SKATelState/SKATelState.py
similarity index 75%
rename from skabase/SKATelState/SKATelState/SKATelState.py
rename to skabase/SKATelState/SKATelState.py
index 022c89a0c36836b41213a6f1c2bca86d5f2b945d..3b4b406005644a8c994f04f6f37e76f72b279ae2 100644
--- a/skabase/SKATelState/SKATelState/SKATelState.py
+++ b/skabase/SKATelState/SKATelState.py
@@ -12,19 +12,30 @@ A generic base device for Telescope State for SKA.
 
 # tango imports
 from tango.server import run, DeviceMeta, device_property
-from SKABaseDevice import SKABaseDevice
+
 # Additional import
 # PROTECTED REGION ID(SKATelState.additionnal_import) ENABLED START #
+#standard import
+import os
+import sys
+from future.utils import with_metaclass
+
+# SKA specific imports
+from skabase import release
+
+file_path = os.path.dirname(os.path.abspath(__file__))
+basedevice_path = os.path.abspath(os.path.join(file_path, os.pardir)) + "/SKABaseDevice"
+sys.path.insert(0, basedevice_path)
+from SKABaseDevice import SKABaseDevice
 # PROTECTED REGION END #    //  SKATelState.additionnal_import
 
 __all__ = ["SKATelState", "main"]
 
 
-class SKATelState(SKABaseDevice):
+class SKATelState(with_metaclass(DeviceMeta, SKABaseDevice)):
     """
     A generic base device for Telescope State for SKA.
     """
-    __metaclass__ = DeviceMeta
     # PROTECTED REGION ID(SKATelState.class_variable) ENABLED START #
     # PROTECTED REGION END #    //  SKATelState.class_variable
 
@@ -36,6 +47,7 @@ class SKATelState(SKABaseDevice):
         dtype='str',
     )
 
+
     # ----------
     # Attributes
     # ----------
@@ -45,7 +57,13 @@ class SKATelState(SKABaseDevice):
     # ---------------
 
     def init_device(self):
+        """init_device
+        Init device method of SKATelStateDevice
+        """
         SKABaseDevice.init_device(self)
+        self._build_state = '{}, {}, {}'.format(release.name, release.version,
+                                                release.description)
+        self._version_id = release.version
         # PROTECTED REGION ID(SKATelState.init_device) ENABLED START #
         # PROTECTED REGION END #    //  SKATelState.init_device
 
diff --git a/skabase/SKATelState/SKATelState/__init__.py b/skabase/SKATelState/SKATelState/__init__.py
deleted file mode 100644
index a5bdd7227ccb1c128520e2c686353872dd205008..0000000000000000000000000000000000000000
--- a/skabase/SKATelState/SKATelState/__init__.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKATelState project
-#
-#
-#
-
-"""SKATelState
-
-A generic base device for Telescope State for SKA.
-"""
-
-from . import release
-from .SKATelState import SKATelState, main
-
-__version__ = release.version
-__version_info__ = release.version_info
-__author__ = release.author
diff --git a/skabase/SKATelState/SKATelState/release.py b/skabase/SKATelState/SKATelState/release.py
deleted file mode 100644
index f8d3063ea47f629f840aa21073904d784163eaea..0000000000000000000000000000000000000000
--- a/skabase/SKATelState/SKATelState/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKATelState project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skatelstate"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """A generic base device for Telescope State for SKA."""
-author = "cam"
-author_email = "cam at ska.ac.za"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKATelState/__init__.py b/skabase/SKATelState/__init__.py
index 70c715935ec0737670e8a89c547762700e27e447..d3af93c2f9f223c1edf48fd53dd4770751a3233f 100644
--- a/skabase/SKATelState/__init__.py
+++ b/skabase/SKATelState/__init__.py
@@ -7,10 +7,11 @@
 
 """SKATelState
 
-A generic TelState device for SKA.
+A generic base device for Telescope State for SKA.
 """
+__all__ = ["SKATelState", "main"]
 
-from . import release
+from skabase import release
 from .SKATelState import SKATelState, main
 
 __version__ = release.version
diff --git a/skabase/SKATelState/SKATelState/__main__.py b/skabase/SKATelState/__main__.py
similarity index 68%
rename from skabase/SKATelState/SKATelState/__main__.py
rename to skabase/SKATelState/__main__.py
index e5be91e00af5509ba82a01e82b28259cea2a8487..4b8e506e3c7780de8bdb37e4bdacd1be9b81c188 100644
--- a/skabase/SKATelState/SKATelState/__main__.py
+++ b/skabase/SKATelState/__main__.py
@@ -9,6 +9,7 @@
 
 Main module of SKATelState device class.
 """
+from __future__ import absolute_import
 
-from SKATelState import main
+from .SKATelState import main
 main()
diff --git a/skabase/SKATelState/release.py b/skabase/SKATelState/release.py
deleted file mode 100644
index 784b51b96eeec23a3cfc4a3fab96769007f84ad6..0000000000000000000000000000000000000000
--- a/skabase/SKATelState/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKATelState project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skatelstate"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """A generic telstate device for SKA."""
-author = "cam"
-author_email = "cam at ska.ac.za"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKATelState/setup.py b/skabase/SKATelState/setup.py
deleted file mode 100644
index 47560cc8b9764092831f3109523e26c8c2d5232d..0000000000000000000000000000000000000000
--- a/skabase/SKATelState/setup.py
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKATelState project
-#
-#
-#
-
-"""Setup file of SKATelState base class"""
-
-import os
-import sys
-from setuptools import setup
-
-setup_dir = os.path.dirname(os.path.abspath(__file__))
-
-# make sure we use latest info from local code
-sys.path.insert(0, setup_dir)
-
-readme_filename = os.path.join(setup_dir, 'README.rst')
-with open(readme_filename) as file:
-    long_description = file.read()
-
-release_filename = os.path.join(setup_dir, 'SKATelState', 'release.py')
-exec(open(release_filename).read())
-
-pack = ['SKATelState']
-
-setup(name=name,
-      version=version,
-      description='A generic base device for Telescope State for SKA.',
-      packages=pack,
-      include_package_data=True,
-      test_suite="test",
-      entry_points={'console_scripts':['SKATelState = SKATelState:main']},
-      author='cam',
-      author_email='cam at ska.ac.za',
-      license='BSD-3-Clause',
-      long_description=long_description,
-      url='www.tango-controls.org',
-      platforms="All Platforms"
-      )
diff --git a/skabase/SKATelState/test/SKATelState_test.py b/skabase/SKATelState/test/SKATelState_test.py
index f5fb9d724ad6b1fd2de67ccfa09ac28748fc2015..9ff5392fee85ca91a30f412cb42ba5efbfa6c5de 100644
--- a/skabase/SKATelState/test/SKATelState_test.py
+++ b/skabase/SKATelState/test/SKATelState_test.py
@@ -9,6 +9,7 @@
 """Contain the tests for the SKATelState."""
 
 # Path
+from builtins import object
 import sys
 import os
 path = os.path.join(os.path.dirname(__file__), os.pardir)
@@ -19,6 +20,7 @@ import pytest
 from mock import MagicMock
 
 from PyTango import DevState
+import re
 
 # PROTECTED REGION ID(SKATelState.test_additional_imports) ENABLED START #
 # PROTECTED REGION END #    //  SKATelState.test_additional_imports
@@ -92,7 +94,11 @@ class TestSKATelState(object):
     def test_GetVersionInfo(self, tango_context):
         """Test for GetVersionInfo"""
         # PROTECTED REGION ID(SKATelState.test_GetVersionInfo) ENABLED START #
-        assert tango_context.device.GetVersionInfo() == [""]
+        versionPattern = re.compile(
+            r'SKATelState, lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope.')
+        versionInfo = tango_context.device.GetVersionInfo()
+        assert (re.match(versionPattern, versionInfo[0])) != None
         # PROTECTED REGION END #    //  SKATelState.test_GetVersionInfo
 
     # PROTECTED REGION ID(SKATelState.test_Reset_decorators) ENABLED START #
@@ -109,7 +115,10 @@ class TestSKATelState(object):
     def test_buildState(self, tango_context):
         """Test for buildState"""
         # PROTECTED REGION ID(SKATelState.test_buildState) ENABLED START #
-        assert tango_context.device.buildState == ''
+        buildPattern = re.compile(
+            r'lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope')
+        assert (re.match(buildPattern, tango_context.device.buildState)) != None
         # PROTECTED REGION END #    //  SKATelState.test_buildState
 
     # PROTECTED REGION ID(SKATelState.test_versionId_decorators) ENABLED START #
@@ -117,7 +126,8 @@ class TestSKATelState(object):
     def test_versionId(self, tango_context):
         """Test for versionId"""
         # PROTECTED REGION ID(SKATelState.test_versionId) ENABLED START #
-        assert tango_context.device.versionId == ''
+        versionIdPattern = re.compile(r'[0-9].[0-9].[0-9]')
+        assert (re.match(versionIdPattern, tango_context.device.versionId)) != None
         # PROTECTED REGION END #    //  SKATelState.test_versionId
 
     # PROTECTED REGION ID(SKATelState.test_centralLoggingLevel_decorators) ENABLED START #
diff --git a/skabase/SKATestDevice/SKATestDevice/SKATestDevice.py b/skabase/SKATestDevice/SKATestDevice.py
similarity index 92%
rename from skabase/SKATestDevice/SKATestDevice/SKATestDevice.py
rename to skabase/SKATestDevice/SKATestDevice.py
index 71017f7bd14fc04754336005a83d7c1bd6563925..6d4d3481f520265afc05ca4e09a6105cbbf85453 100644
--- a/skabase/SKATestDevice/SKATestDevice/SKATestDevice.py
+++ b/skabase/SKATestDevice/SKATestDevice.py
@@ -15,24 +15,32 @@ import tango
 from tango import DebugIt
 from tango.server import run
 from tango.server import DeviceMeta, attribute, command
-from SKABaseDevice import SKABaseDevice
-import logging
+
 # Additional import
-from logging.handlers import SysLogHandler
 # PROTECTED REGION ID(SKATestDevice.additionnal_import) ENABLED START #
+# standard imports
+import os
+import sys
+from future.utils import with_metaclass
 import json
-from skabase.utils import (exception_manager, convert_api_value, coerce_value)
 
+# SKA specific imports
+from skabase import release
+
+file_path = os.path.dirname(os.path.abspath(__file__))
+basedevice_path = os.path.abspath(os.path.join(file_path, os.pardir)) + "/SKABaseDevice"
+sys.path.insert(0, basedevice_path)
+from SKABaseDevice import SKABaseDevice
+from skabase.auxiliary.utils import (exception_manager, convert_api_value, coerce_value)
 # PROTECTED REGION END #    //  SKATestDevice.additionnal_import
 
 __all__ = ["SKATestDevice", "main"]
 
 
-class SKATestDevice(SKABaseDevice):
+class SKATestDevice(with_metaclass(DeviceMeta, SKABaseDevice)):
     """
     A generic Test device for testing SKA base class functionalities.
     """
-    __metaclass__ = DeviceMeta
     # PROTECTED REGION ID(SKATestDevice.class_variable) ENABLED START #
     # PROTECTED REGION END #    //  SKATestDevice.class_variable
 
@@ -79,11 +87,12 @@ class SKATestDevice(SKABaseDevice):
     def init_device(self):
         SKABaseDevice.init_device(self)
         # PROTECTED REGION ID(SKATestDevice.init_device) ENABLED START #
-        logger.info("TurnOn Sending info")
+        self._build_state = '{}, {}, {}'.format(release.name, release.version,
+                                                release.description)
+        self._version_id = release.version
         self._storage_logging_level = int(tango.LogLevel.LOG_DEBUG)
         self._element_logging_level = int(tango.LogLevel.LOG_DEBUG)
         self._central_logging_level = int(tango.LogLevel.LOG_DEBUG)
-        logger.setLevel(logging.DEBUG)
         # PROTECTED REGION END #    //  SKATestDevice.init_device
 
     def always_executed_hook(self):
diff --git a/skabase/SKATestDevice/SKATestDevice/__init__.py b/skabase/SKATestDevice/SKATestDevice/__init__.py
deleted file mode 100644
index 1269a3fba562e8d1670125dffa4acef32ea763d5..0000000000000000000000000000000000000000
--- a/skabase/SKATestDevice/SKATestDevice/__init__.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKATestDevice project
-#
-#
-#
-
-"""SKATestDevice
-
-A generic Test device for testing SKA base class functionalities.
-"""
-
-from . import release
-from .SKATestDevice import SKATestDevice, main
-
-__version__ = release.version
-__version_info__ = release.version_info
-__author__ = release.author
diff --git a/skabase/SKATestDevice/SKATestDevice/__main__.py b/skabase/SKATestDevice/SKATestDevice/__main__.py
deleted file mode 100644
index f00561fa116ba307bbb62f747a45ec1a428f7c8a..0000000000000000000000000000000000000000
--- a/skabase/SKATestDevice/SKATestDevice/__main__.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKATestDevice project
-#
-#
-#
-
-from SKATestDevice import main
-main()
diff --git a/skabase/SKATestDevice/SKATestDevice/release.py b/skabase/SKATestDevice/SKATestDevice/release.py
deleted file mode 100644
index ced34b15ca03d20868a7764c268e4f14deb7586a..0000000000000000000000000000000000000000
--- a/skabase/SKATestDevice/SKATestDevice/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKATestDevice project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skatestdevice"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """A generic Test device for testing SKA base class functionalites."""
-author = "cam"
-author_email = "cam at ska.ac.za"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKATestDevice/__init__.py b/skabase/SKATestDevice/__init__.py
index 13b34cf4eb2daaa95d372f2a7b691f4fe7232dcc..051d77b0e22cc79f22a0c2ca764db7d4eb384324 100644
--- a/skabase/SKATestDevice/__init__.py
+++ b/skabase/SKATestDevice/__init__.py
@@ -7,10 +7,10 @@
 
 """SKATestDevice
 
-A generic base device for Testing SKA base class features.
+A generic Test device for testing SKA base class functionalities.
 """
 
-from . import release
+from skabase import release
 from .SKATestDevice import SKATestDevice, main
 
 __version__ = release.version
diff --git a/skabase/SKATestDevice/__main__.py b/skabase/SKATestDevice/__main__.py
index f00561fa116ba307bbb62f747a45ec1a428f7c8a..69174a3280b9125ae21e943f220495c1044beab8 100644
--- a/skabase/SKATestDevice/__main__.py
+++ b/skabase/SKATestDevice/__main__.py
@@ -5,5 +5,6 @@
 #
 #
 
-from SKATestDevice import main
+from __future__ import absolute_import
+from .SKATestDevice import main
 main()
diff --git a/skabase/SKATestDevice/release.py b/skabase/SKATestDevice/release.py
deleted file mode 100644
index c2a268afbaa053440a8e827f4c1d89911959b824..0000000000000000000000000000000000000000
--- a/skabase/SKATestDevice/release.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKATestDevice project
-#
-#
-#
-
-"""Release information for Python Package"""
-
-name = """tangods-skatestdevice"""
-version = "1.0.0"
-version_info = version.split(".")
-description = """A generic base device for Testing SKA base class features."""
-author = "cam"
-author_email = "cam at ska.ac.za"
-license = """BSD-3-Clause"""
-url = """www.tango-controls.org"""
-copyright = """"""
diff --git a/skabase/SKATestDevice/setup.py b/skabase/SKATestDevice/setup.py
deleted file mode 100644
index cad5c1cdeadc565dae29a554ab10f75606dc92e1..0000000000000000000000000000000000000000
--- a/skabase/SKATestDevice/setup.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-#
-# This file is part of the SKATestDevice project
-#
-#
-#
-
-import os
-import sys
-from setuptools import setup
-
-setup_dir = os.path.dirname(os.path.abspath(__file__))
-
-# make sure we use latest info from local code
-sys.path.insert(0, setup_dir)
-
-readme_filename = os.path.join(setup_dir, 'README.rst')
-with open(readme_filename) as file:
-    long_description = file.read()
-
-release_filename = os.path.join(setup_dir, 'SKATestDevice', 'release.py')
-exec(open(release_filename).read())
-
-pack = ['SKATestDevice']
-
-setup(name=name,
-      version=version,
-      description='A generic Test device for testing SKA base class functionalites.',
-      packages=pack,
-      include_package_data=True,
-      test_suite="test",
-      entry_points={'console_scripts':['SKATestDevice = SKATestDevice:main']},
-      author='cam',
-      author_email='cam at ska.ac.za',
-      license='BSD-3-Clause',
-      long_description=long_description,
-      url='www.tango-controls.org',
-      platforms="All Platforms"
-      )
diff --git a/skabase/SKATestDevice/test/SKATestDevice_test.py b/skabase/SKATestDevice/test/SKATestDevice_test.py
index 2434e068a924032a13476004ad7ff63df3af5452..82441e881284649c3e68013389e06738d30fd8b8 100644
--- a/skabase/SKATestDevice/test/SKATestDevice_test.py
+++ b/skabase/SKATestDevice/test/SKATestDevice_test.py
@@ -9,6 +9,7 @@
 """Contain the tests for the SKATestDevice."""
 
 # Path
+from builtins import object
 import sys
 import os
 path = os.path.join(os.path.dirname(__file__), os.pardir)
@@ -17,7 +18,7 @@ sys.path.insert(0, os.path.abspath(path))
 # Imports
 import pytest
 from tango import DevFailed, DevState
-
+import re
 
 # PROTECTED REGION ID(SKATestDevice.test_additional_imports) ENABLED START #
 # PROTECTED REGION END #    //  SKATestDevice.test_additional_imports
@@ -78,7 +79,11 @@ class TestSKATestDevice(object):
     def test_GetVersionInfo(self, tango_context):
         """Test for GetVersionInfo"""
         # PROTECTED REGION ID(SKATestDevice.test_GetVersionInfo) ENABLED START #
-        assert tango_context.device.GetVersionInfo() == [""]
+        versionPattern = re.compile(
+            r'SKATestDevice, lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope.')
+        versionInfo = tango_context.device.GetVersionInfo()
+        assert (re.match(versionPattern, versionInfo[0])) != None
         # PROTECTED REGION END #    //  SKATestDevice.test_GetVersionInfo
 
     # PROTECTED REGION ID(SKATestDevice.test_State_decorators) ENABLED START #
@@ -162,7 +167,10 @@ class TestSKATestDevice(object):
     def test_buildState(self, tango_context):
         """Test for buildState"""
         # PROTECTED REGION ID(SKATestDevice.test_buildState) ENABLED START #
-        assert tango_context.device.buildState == ''
+        buildPattern = re.compile(
+            r'lmc-base-classes, [0-9].[0-9].[0-9], '
+            r'A set of generic base devices for SKA Telescope')
+        assert (re.match(buildPattern, tango_context.device.buildState)) != None
         # PROTECTED REGION END #    //  SKATestDevice.test_buildState
 
     # PROTECTED REGION ID(SKATestDevice.test_versionId_decorators) ENABLED START #
@@ -170,7 +178,8 @@ class TestSKATestDevice(object):
     def test_versionId(self, tango_context):
         """Test for versionId"""
         # PROTECTED REGION ID(SKATestDevice.test_versionId) ENABLED START #
-        assert tango_context.device.versionId == ''
+        versionIdPattern = re.compile(r'[0-9].[0-9].[0-9]')
+        assert (re.match(versionIdPattern, tango_context.device.versionId)) != None
         # PROTECTED REGION END #    //  SKATestDevice.test_versionId
 
     # PROTECTED REGION ID(SKATestDevice.test_centralLoggingLevel_decorators) ENABLED START #
@@ -178,7 +187,7 @@ class TestSKATestDevice(object):
     def test_centralLoggingLevel(self, tango_context):
         """Test for centralLoggingLevel"""
         # PROTECTED REGION ID(SKATestDevice.test_centralLoggingLevel) ENABLED START #
-        assert tango_context.device.centralLoggingLevel == 0
+        assert tango_context.device.centralLoggingLevel == 5
         # PROTECTED REGION END #    //  SKATestDevice.test_centralLoggingLevel
 
     # PROTECTED REGION ID(SKATestDevice.test_elementLoggingLevel_decorators) ENABLED START #
@@ -186,7 +195,7 @@ class TestSKATestDevice(object):
     def test_elementLoggingLevel(self, tango_context):
         """Test for elementLoggingLevel"""
         # PROTECTED REGION ID(SKATestDevice.test_elementLoggingLevel) ENABLED START #
-        assert tango_context.device.elementLoggingLevel == 0
+        assert tango_context.device.elementLoggingLevel == 5
         # PROTECTED REGION END #    //  SKATestDevice.test_elementLoggingLevel
 
     # PROTECTED REGION ID(SKATestDevice.test_storageLoggingLevel_decorators) ENABLED START #
@@ -194,7 +203,7 @@ class TestSKATestDevice(object):
     def test_storageLoggingLevel(self, tango_context):
         """Test for storageLoggingLevel"""
         # PROTECTED REGION ID(SKATestDevice.test_storageLoggingLevel) ENABLED START #
-        assert tango_context.device.storageLoggingLevel == 0
+        assert tango_context.device.storageLoggingLevel == 5
         # PROTECTED REGION END #    //  SKATestDevice.test_storageLoggingLevel
 
     # PROTECTED REGION ID(SKATestDevice.test_healthState_decorators) ENABLED START #
diff --git a/skabase/__init__.py b/skabase/__init__.py
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0876b3881709c20edeec9862d2b5fcf518eb7f5d 100644
--- a/skabase/__init__.py
+++ b/skabase/__init__.py
@@ -0,0 +1,10 @@
+__all__ = ["auxiliary",
+           "SKAAlarmHandler",
+           "SKABaseDevice",
+           "SKACapability",
+           "SKALogger",
+           "SKAMaster",
+           "SKAObsDevice",
+           "SKASubarray",
+           "SKATelState"
+            ]
diff --git a/skabase/auxiliary/__init__.py b/skabase/auxiliary/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..3f6488254621e68eb2bb80c84ff0ef57a570ac75
--- /dev/null
+++ b/skabase/auxiliary/__init__.py
@@ -0,0 +1 @@
+__all__ = ["utils", "faults"]
\ No newline at end of file
diff --git a/skabase/faults.py b/skabase/auxiliary/faults.py
similarity index 100%
rename from skabase/faults.py
rename to skabase/auxiliary/faults.py
diff --git a/skabase/utils.py b/skabase/auxiliary/utils.py
similarity index 97%
rename from skabase/utils.py
rename to skabase/auxiliary/utils.py
index 45f1dcab098cc44125be6463f062182bf873b8df..1b6a1c28cf4339174eb5b1b896f90c7c7147afca 100644
--- a/skabase/utils.py
+++ b/skabase/auxiliary/utils.py
@@ -1,5 +1,7 @@
 """General utilities that may be useful to SKA devices and clients."""
+from __future__ import absolute_import
 
+from builtins import str
 import ast
 import inspect
 import json
@@ -13,10 +15,11 @@ from datetime import datetime
 import tango
 from tango import (DeviceProxy, DbDatum, DevState, DbDevInfo, AttrQuality,
                    AttrWriteType, Except, ErrSeverity)
-from tango._tango import DevState as _DevState
+from tango import DevState as _DevState
 from contextlib import contextmanager
 
-from .faults import GroupDefinitionsError
+from faults import GroupDefinitionsError
+from faults import SKABaseError
 
 
 int_types = {tango._tango.CmdArgType.DevUShort,
@@ -292,7 +295,7 @@ def json_loads_byteified(json_text):
 
 def _byteify(data, ignore_dicts=False):
     """If this is a unicode string, return its string representation."""
-    if isinstance(data, unicode):
+    if isinstance(data, str):
         return data.encode('utf-8')
     # if this is a list of values, return list of byteified values
     if isinstance(data, list):
@@ -302,7 +305,7 @@ def _byteify(data, ignore_dicts=False):
     if isinstance(data, dict) and not ignore_dicts:
         return {
             _byteify(key, ignore_dicts=True): _byteify(value, ignore_dicts=True)
-            for key, value in data.iteritems()
+            for key, value in data.items()
         }
     # if it's anything else, return it in its original form
     return data
@@ -400,7 +403,9 @@ def get_groups_from_json(json_definitions):
 
     except Exception as exc:
         # the exc_info is included for detailed traceback
-        raise GroupDefinitionsError(exc), None, sys.exc_info()[2]
+        ska_error = SKABaseError(exc)
+        raise GroupDefinitionsError(ska_error).with_traceback(sys.exc_info()[2])
+        #raise GroupDefinitionsError(exc), None, sys.exc_info()[2]
 
 
 def _validate_group(definition):
@@ -501,7 +506,7 @@ def validate_input_sizes(command_name, argin):
 
 def convert_dict_to_list(dictionary):
     the_list = []
-    for key, value in (dictionary.items()):
+    for key, value in (list(dictionary.items())):
         the_list.append("{}:{}".format(key, value))
 
     return sorted(the_list)
diff --git a/skabase/conftest.py b/skabase/conftest.py
index 2328706561fc3609b7b084598977ef271a88d17b..61a7079b8d1397f5e03b1ae4d629213d2875bb9e 100644
--- a/skabase/conftest.py
+++ b/skabase/conftest.py
@@ -2,6 +2,7 @@
 A module defining a list of fixture functions that are shared across all the skabase
 tests.
 """
+from __future__ import print_function
 import mock
 import pytest
 import importlib
@@ -23,7 +24,7 @@ def tango_context(request):
     fq_test_class_name_details = fq_test_class_name.split(".")
     package_name = fq_test_class_name_details[0]
     class_name = module_name = fq_test_class_name_details[1]
-    module = importlib.import_module("{}.{}".format(package_name, module_name))
+    module = importlib.import_module(fq_test_class_name_details[1], fq_test_class_name_details[1])
     klass = getattr(module, class_name)
 
     tango_context = DeviceTestContext(klass)
diff --git a/skabase/release.py b/skabase/release.py
new file mode 100644
index 0000000000000000000000000000000000000000..36f5b7b6cdd6fbba0642154268f87e99f923bbe7
--- /dev/null
+++ b/skabase/release.py
@@ -0,0 +1,18 @@
+# -*- coding: utf-8 -*-
+#
+# This file is part of the SKA LMC Base Classes project
+#
+#
+#
+
+"""Release information for lmc-base-classes Python Package"""
+
+name = """lmcbaseclasses"""
+version = "1.0.0"
+version_info = version.split(".")
+description = """A set of generic base devices for SKA Telescope."""
+author = "SKA India"
+author_email = "adityadange.ska at gmail.com"
+license = """BSD-3-Clause"""
+url = """https://www.skatelescope.org/"""
+copyright = """NCRA"""
\ No newline at end of file
diff --git a/skabase/tests/base.py b/skabase/tests/base.py
index a49323d28062d234f86138316dae6a8d4620ba03..5e9e21fd05cf2b8ae46c6fc0872b5af74c51a51c 100644
--- a/skabase/tests/base.py
+++ b/skabase/tests/base.py
@@ -64,7 +64,7 @@ class DeviceServerBaseTest(TestCase):
 
     @classmethod
     def add_device_prop(cls,device_ref,properties):
-        for name,value in properties.iteritems():
+        for name,value in properties.items():
             db_datum = DbDatum()
             db_datum.name = name
             db_datum.value_string.append(value)
diff --git a/skabase/tests/test_group.py b/skabase/tests/test_group.py
index 6da83490ba5b9226a4147807abd92112fedc85d1..c9a5741a2ca8ac2b53008723e70eb4ff3b6c1aa2 100644
--- a/skabase/tests/test_group.py
+++ b/skabase/tests/test_group.py
@@ -1,6 +1,7 @@
+from __future__ import absolute_import
 import tango
 from tango import DeviceProxy, AttrQuality, AttributeProxy
-from base import DeviceServerBaseTest
+from .base import DeviceServerBaseTest
 import json
 from time import sleep
 
diff --git a/skabase/tests/test_utils.py b/skabase/tests/test_utils.py
index 8de6cb96ff6963c9bf1b20f02fea027aeaa7122c..aacce7cf468df78840f57bfff5fa5a91b2fe573d 100644
--- a/skabase/tests/test_utils.py
+++ b/skabase/tests/test_utils.py
@@ -1,4 +1,5 @@
 """Tests for skabase.utils."""
+from __future__ import print_function
 
 import json
 import pytest
@@ -172,14 +173,14 @@ def _validate_group(definition, group):
     expected_devices = definition.get('devices', [])  # key may exist
     expected_subgroups = definition.get('subgroups', [])  # key may exist
 
-    print "Checking group:", expected_group_name, group
+    print("Checking group:", expected_group_name, group)
     assert group is not None
     assert expected_group_name == group.get_name()
     device_list = group.get_device_list(forward=False)
     assert expected_devices == list(device_list)
 
     for expected_subgroup in expected_subgroups:
-        print "\tsubgroup def", expected_subgroup
+        print("\tsubgroup def", expected_subgroup)
         subgroup = group.get_group(expected_subgroup['group_name'])
         assert subgroup is not None
         # recurse the tree