diff --git a/devices/examples/HW_device_template.py b/devices/examples/HW_device_template.py
new file mode 100644
index 0000000000000000000000000000000000000000..66b6bdb19c0b00703805dc2f76cce0d8208a36b2
--- /dev/null
+++ b/devices/examples/HW_device_template.py
@@ -0,0 +1,90 @@
+# -*- coding: utf-8 -*-
+#
+# This file wraps around a tango device class and provides a number of abstractions useful for hardware devices. It works together
+#
+# Distributed under the terms of the APACHE license.
+# See LICENSE.txt for more info.
+
+"""
+
+"""
+
+# PyTango imports
+from tango.server import run
+from tango import AttrWriteType
+# Additional import
+
+from util.attribute_wrapper import attribute_wrapper
+from util.hardware_device import hardware_device
+
+
+__all__ = ["HW_dev"]
+
+
+class HW_dev(hardware_device):
+    """
+    This class is the minimal (read empty) implementation of a class using 'hardware_device'
+    """
+
+    # ----------
+    # Attributes
+    # ----------
+    """
+    attribute wrapper objects can be declared here. All attribute wrapper objects will get automatically put in a list (attr_list) for easy access
+
+    example = attribute_wrapper(comms_annotation="this is an example", datatype=numpy.double, dims=(8, 2), access=AttrWriteType.READ_WRITE)
+    ...
+
+    """
+
+    def always_executed_hook(self):
+        """Method always executed before any TANGO command is executed."""
+        pass
+
+    def delete_device(self):
+        """Hook to delete resources allocated in init_device.
+
+        This method allows for any memory or other resources allocated in the
+        init_device method to be released.  This method is called by the device
+        destructor and by the device Init command (a Tango built-in).
+        """
+        self.debug_stream("Shutting down...")
+
+        self.Off()
+        self.debug_stream("Shut down.  Good bye.")
+
+    # --------
+    # overloaded functions
+    # --------
+    def configure_for_fault(self):
+        """ user code here. is called when the state is set to FAULT """
+        pass
+
+    def configure_for_off(self):
+        """ user code here. is called when the state is set to OFF """
+        pass
+
+    def configure_for_on(self):
+        """ user code here. is called when the state is set to ON """
+
+        pass
+
+    def configure_for_standby(self):
+        """ user code here. is called when the state is set to STANDBY """
+        pass
+
+    def configure_for_initialise(self):
+        """ user code here. is called when the sate is set to INIT """
+        pass
+
+
+# ----------
+# Run server
+# ----------
+def main(args=None, **kwargs):
+    """Main function of the hardware device module."""
+    return run((HW_dev,), args=args, **kwargs)
+
+
+if __name__ == '__main__':
+    main()