diff --git a/.release b/.release
index 3a4f11b25b10215b4d5e4ab63f9e8dfe14292f4a..ad2f3059fa13ad985b9fc17570dceea0a5dc1b6b 100644
--- a/.release
+++ b/.release
@@ -1,2 +1,2 @@
-release=0.3.1
-tag=lmcbaseclasses-0.3.1
+release=0.4.0
+tag=lmcbaseclasses-0.4.0
diff --git a/README.md b/README.md
index 5b6a1e9bc43a49e150a425bd13965ec9fe0f510a..e04c0d629418e5502698d88e9d982b1abcc972bb 100644
--- a/README.md
+++ b/README.md
@@ -25,7 +25,7 @@ The lmc-base-classe repository contains set of eight classes as mentioned in SKA
 
 ## Version History
 
-#### 0.4.0 (unreleased)
+#### 0.4.0
 - Changed all `DevEnum` attributes to use Python `enum.IntEnum` classes.  These can be imported from the
   new `control_model` namespace, e.g., `skabase.control_model import AdminMode`.
 - The names of some of the enumeration labels were changed to better match the Control Systems Guidelines.
@@ -36,6 +36,7 @@ The lmc-base-classe repository contains set of eight classes as mentioned in SKA
 - Changed `testMode` attribute from `str` to enumerated type: `TestMode`.
 - Deprecated `TangoLoggingLevel`.  Will be removed in version 0.5.0.  Use `skabase.control_model.LoggingLevel`
   instead.
+- Remove unnecessary usage of `DeviceMeta` class.
 
 #### 0.3.1
 - Used `ska_logging` library instead of defining logging format and handlers locally.
@@ -108,7 +109,7 @@ The base classes are installed as python package in the system. The intended usa
 ```
 from skabase.SKABaseDevice.SKABaseDevice import SKABaseDevice
 
-class DishLeafNode(with_metaclass(DeviceMeta, SKABaseDevice)):
+class DishLeafNode(SKABaseDevice):
 .
 .
 .
diff --git a/docs/source/conf.py b/docs/source/conf.py
index b9eba3a806672694123590250aaec416ce805f12..174ffbf76de8e75895cf24cd8e405ed68e5896d9 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -22,11 +22,11 @@
 #         return MagicMock()
 #
 # # Mock tango modules
-# MOCK_MODULES = ['PyTango', 'tango', 'tango.server', 'run', 'DeviceMeta', 'command',
+# MOCK_MODULES = ['PyTango', 'tango', 'tango.server', 'run', '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',
+autodoc_mock_imports = ['PyTango', 'tango', 'tango.server', 'run', 'command',
                         'future', 'future.utils', 'ska_logging.configuration']
 
 import sys
diff --git a/skabase/SKAAlarmHandler/SKAAlarmHandler.py b/skabase/SKAAlarmHandler/SKAAlarmHandler.py
index 48275c2429c90146e46658de18d82f87f98a953a..3b99c198eaba67b89054a55da5cc06e726a51a9e 100644
--- a/skabase/SKAAlarmHandler/SKAAlarmHandler.py
+++ b/skabase/SKAAlarmHandler/SKAAlarmHandler.py
@@ -14,11 +14,10 @@ attribute values and quality factors, and are separate from the "built-in" TANGO
 # Standard imports
 import os
 import sys
-from future.utils import with_metaclass
 
 # Tango imports
 from tango import DebugIt
-from tango.server import run, DeviceMeta, attribute, command, device_property
+from tango.server import run, attribute, command, device_property
 
 # SKA specific imports
 from skabase import release
@@ -31,7 +30,7 @@ from SKABaseDevice import SKABaseDevice
 __all__ = ["SKAAlarmHandler", "main"]
 
 
-class SKAAlarmHandler(with_metaclass(DeviceMeta, SKABaseDevice)):
+class SKAAlarmHandler(SKABaseDevice):
     """
     A generic base device for Alarms for SKA.
     """
diff --git a/skabase/SKABaseDevice/SKABaseDevice.py b/skabase/SKABaseDevice/SKABaseDevice.py
index 87cd77510ecbaef92e0d95663fa9ff3b0a0d5d3d..1c355c6a003e61c0b43d767098f71d29f7b4b104 100644
--- a/skabase/SKABaseDevice/SKABaseDevice.py
+++ b/skabase/SKABaseDevice/SKABaseDevice.py
@@ -18,12 +18,10 @@ import os
 import sys
 import threading
 
-from future.utils import with_metaclass
-
 # Tango imports
 import tango
 from tango import DebugIt
-from tango.server import run, Device, DeviceMeta, attribute, command, device_property
+from tango.server import run, Device, attribute, command, device_property
 from tango import AttrQuality, AttrWriteType
 from tango import DeviceProxy, DevFailed
 
@@ -177,7 +175,7 @@ class LoggingUtils:
 __all__ = ["SKABaseDevice", "TangoLoggingLevel", "main"]
 
 
-class SKABaseDevice(with_metaclass(DeviceMeta, Device)):
+class SKABaseDevice(Device):
     """
     A generic base device for SKA.
     """
diff --git a/skabase/SKACapability/SKACapability.py b/skabase/SKACapability/SKACapability.py
index edfb78cf716aa45d50f6f9593fce3b8f3558d407..aa03bdf4e7b77fdf333d86775c452d32ef251016 100644
--- a/skabase/SKACapability/SKACapability.py
+++ b/skabase/SKACapability/SKACapability.py
@@ -12,11 +12,10 @@ Capability handling device
 # Standard import
 import os
 import sys
-from future.utils import with_metaclass
 
 # Tango imports
 from tango import DebugIt
-from tango.server import run, DeviceMeta, attribute, command, device_property
+from tango.server import run, attribute, command, device_property
 
 # SKA specific imports
 from skabase import release
@@ -30,7 +29,7 @@ from SKAObsDevice import SKAObsDevice
 __all__ = ["SKACapability", "main"]
 
 
-class SKACapability(with_metaclass(DeviceMeta, SKAObsDevice)):
+class SKACapability(SKAObsDevice):
     """
     A Subarray handling device. It exposes the instances of configured capabilities.
     """
diff --git a/skabase/SKALogger/SKALogger.py b/skabase/SKALogger/SKALogger.py
index c5c3b95eb2fb214c66393e5cab3b2fc59ce58569..e91ba77df5d0c0fb7950ea2c9cc1f306aaea8bfc 100644
--- a/skabase/SKALogger/SKALogger.py
+++ b/skabase/SKALogger/SKALogger.py
@@ -13,11 +13,10 @@ and to store logs using Python logging. It configures the log levels of remote l
 # Standard imports
 import os
 import sys
-from future.utils import with_metaclass
 
 # Tango imports
 from tango import DebugIt, DeviceProxy, DevFailed
-from tango.server import run, DeviceMeta, command
+from tango.server import run, command
 
 # SKA specific imports
 from skabase import release
@@ -31,7 +30,7 @@ from SKABaseDevice import SKABaseDevice
 __all__ = ["SKALogger", "main"]
 
 
-class SKALogger(with_metaclass(DeviceMeta, SKABaseDevice)):
+class SKALogger(SKABaseDevice):
     """
     A generic base device for Logging for SKA.
     """
diff --git a/skabase/SKAMaster/SKAMaster.py b/skabase/SKAMaster/SKAMaster.py
index fb7321887c6695027055b971aac5493f7e62c5cf..79f4a02d5006c7ed8e7623c21fca180acf710619 100644
--- a/skabase/SKAMaster/SKAMaster.py
+++ b/skabase/SKAMaster/SKAMaster.py
@@ -13,11 +13,10 @@ A master test
 # Standard imports
 import os
 import sys
-from future.utils import with_metaclass
 
 # Tango imports
 from tango import DebugIt
-from tango.server import run, DeviceMeta, attribute, command, device_property
+from tango.server import run, attribute, command, device_property
 
 # SKA specific imports
 from skabase import release
@@ -37,7 +36,7 @@ from utils import (validate_capability_types, validate_input_sizes, convert_dict
 __all__ = ["SKAMaster", "main"]
 
 
-class SKAMaster(with_metaclass(DeviceMeta, SKABaseDevice)):
+class SKAMaster(SKABaseDevice):
     """
     A master test
     """
diff --git a/skabase/SKAObsDevice/SKAObsDevice.py b/skabase/SKAObsDevice/SKAObsDevice.py
index 8e1bbdecd93b309cdb0dae9721e345c410693e8a..52c5dc0dade20f8c2498032d3c99eddde3fa53df 100644
--- a/skabase/SKAObsDevice/SKAObsDevice.py
+++ b/skabase/SKAObsDevice/SKAObsDevice.py
@@ -15,10 +15,9 @@ an obsMode will inherit from SKAObsDevice instead of just SKABaseDevice.
 # Standard imports
 import os
 import sys
-from future.utils import with_metaclass
 
 # Tango imports
-from tango.server import run, DeviceMeta, attribute
+from tango.server import run, attribute
 
 # SKA specific imports
 from skabase import release
@@ -33,8 +32,7 @@ from SKABaseDevice import SKABaseDevice
 __all__ = ["SKAObsDevice", "main"]
 
 
-
-class SKAObsDevice(with_metaclass(DeviceMeta, SKABaseDevice)):
+class SKAObsDevice(SKABaseDevice):
     """
     A generic base device for Observations for SKA.
     """
diff --git a/skabase/SKASubarray/SKASubarray.py b/skabase/SKASubarray/SKASubarray.py
index 8b4a65a9aef01e6e7bfd9bd4fb29fbf224877cec..3daca3472109a5a08757c1ede2bdfd295baf5e82 100644
--- a/skabase/SKASubarray/SKASubarray.py
+++ b/skabase/SKASubarray/SKASubarray.py
@@ -13,11 +13,10 @@ capabilities, and exposes the related information like assigned resources, confi
 # Standard imports
 import os
 import sys
-from future.utils import with_metaclass
 
 # Tango imports
 from tango import DebugIt
-from tango.server import run, DeviceMeta, attribute, command
+from tango.server import run, attribute, command
 from tango.server import device_property
 from tango import Except, ErrSeverity, DevState
 
@@ -34,7 +33,7 @@ from SKAObsDevice import SKAObsDevice
 __all__ = ["SKASubarray", "main"]
 
 
-class SKASubarray(with_metaclass(DeviceMeta, SKAObsDevice)):
+class SKASubarray(SKAObsDevice):
     """
     SubArray handling device
     """
diff --git a/skabase/SKATelState/SKATelState.py b/skabase/SKATelState/SKATelState.py
index b4e20e518da8ba7466b8b02626b3e9e977097949..1a2dd778b533f1516340bfe844a5dd94b563fc09 100644
--- a/skabase/SKATelState/SKATelState.py
+++ b/skabase/SKATelState/SKATelState.py
@@ -12,10 +12,9 @@ A generic base device for Telescope State for SKA.
 # Standard import
 import os
 import sys
-from future.utils import with_metaclass
 
 # Tango imports
-from tango.server import run, DeviceMeta, device_property
+from tango.server import run, device_property
 
 # SKA specific imports
 from skabase import release
@@ -29,7 +28,7 @@ from SKABaseDevice import SKABaseDevice
 __all__ = ["SKATelState", "main"]
 
 
-class SKATelState(with_metaclass(DeviceMeta, SKABaseDevice)):
+class SKATelState(SKABaseDevice):
     """
     A generic base device for Telescope State for SKA.
     """
diff --git a/skabase/SKATestDevice/SKATestDevice.py b/skabase/SKATestDevice/SKATestDevice.py
index fb9d5e1e48f15c354bf83567a0d664cd8a89f0cb..a30f1e32549eea0bd218672edf01676847154781 100644
--- a/skabase/SKATestDevice/SKATestDevice.py
+++ b/skabase/SKATestDevice/SKATestDevice.py
@@ -13,13 +13,12 @@ A generic Test device for testing SKA base class functionalities.
 import os
 import sys
 import json
-from future.utils import with_metaclass
 
 # Tango imports
 import tango
 from tango import DebugIt
 from tango.server import run
-from tango.server import DeviceMeta, attribute, command
+from tango.server import attribute, command
 
 # SKA specific imports
 from skabase import release
@@ -36,7 +35,7 @@ from skabase.auxiliary.utils import (exception_manager, convert_api_value, coerc
 __all__ = ["SKATestDevice", "main"]
 
 
-class SKATestDevice(with_metaclass(DeviceMeta, SKABaseDevice)):
+class SKATestDevice(SKABaseDevice):
     """
     A generic Test device for testing SKA base class functionalities.
     """
diff --git a/skabase/release.py b/skabase/release.py
index 90c29bd5913fd3daaf0c485875f7e8ef0a30759e..c0561d08b3fbd3098606ae51173b19cd5f4606bc 100644
--- a/skabase/release.py
+++ b/skabase/release.py
@@ -7,7 +7,7 @@
 """Release information for lmc-base-classes Python Package"""
 
 name = """lmcbaseclasses"""
-version = "0.3.1"
+version = "0.4.0"
 version_info = version.split(".")
 description = """A set of generic base devices for SKA Telescope."""
 author = "SKA India and SARAO"