diff --git a/devices/SNMP.py b/devices/SNMP.py
deleted file mode 100644
index 7f1a7a4e91b841dc818b763dc5c3a04ae5d5ecd2..0000000000000000000000000000000000000000
--- a/devices/SNMP.py
+++ /dev/null
@@ -1,119 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# This file is part of the PCC project
-#
-#
-#
-# Distributed under the terms of the APACHE license.
-# See LICENSE.txt for more info.
-
-""" PCC Device Server for LOFAR2.0
-
-"""
-
-# PyTango imports
-from tango.server import run
-from tango.server import device_property
-# Additional import
-
-from clients.SNMP_client import SNMP_client
-from src.attribute_wrapper import *
-from src.hardware_device import *
-
-
-__all__ = ["PCC", "main"]
-
-class PCC(hardware_device):
-	"""
-
-	**Properties:**
-
-	- Device Property
-		SNMP_community
-			- Type:'DevString'
-		SNMP_host
-			- Type:'DevULong'
-		SNMP_timeout
-			- Type:'DevDouble'
-	"""
-
-	# -----------------
-	# Device Properties
-	# -----------------
-
-	SNMP_community = device_property(
-		dtype='DevString',
-		mandatory=True
-	)
-
-	SNMP_host = device_property(
-		dtype='DevString',
-		mandatory=True
-	)
-
-	SNMP_timeout = device_property(
-		dtype='DevDouble',
-		mandatory=True
-	)
-
-	# ----------
-	# Attributes
-	# ----------
-
-
-	attr0 = attribute_wrapper(comms_annotation={"oids": [""]}, datatype=numpy.bool_, dims=(32,), access=AttrWriteType.READ_WRITE)
-	attr1 = attribute_wrapper(comms_annotation={"oids": ["1.3.6.1.2.1.1.6.0"]}, datatype=numpy.bool_, access=AttrWriteType.READ_WRITE)
-
-	attr2 = attribute_wrapper(comms_annotation={"host": "127.0.0.1", "oids": ["1.3.6.1.2.1.1.5.0"]}, datatype=numpy.bool_, access=AttrWriteType.READ_WRITE)
-
-	attr3 = attribute_wrapper(comms_annotation={"host": "127.0.0.1", "oids": ["1.3.6.1.2.1.1.5.1", "1.3.6.1.2.1.1.5.2", "1.3.6.1.2.1.1.5.3"]}, dims=(3,), datatype=numpy.bool_)
-	attr4 = attribute_wrapper(comms_annotation={"host": "127.0.0.1", "oids": ["1.3.6.1.2.1.1.5.0"]}, dims=(3,), datatype=numpy.bool_)
-	# ["1.3.6.1.2.1.1.5.0"] gets transformed in to an array the size of dims with ".1", ".2" .. added
-	# ["1.3.6.1.2.1.1.5.0.1", "1.3.6.1.2.1.1.5.0.2", "1.3.6.1.2.1.1.5.0.3"]
-
-	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 initialise(self):
-		""" user code here. is called when the state is set to STANDBY """
-
-		#set up the SNMP ua client
-		self.snmp_manager = SNMP_client(self.SNMP_community, self.SNMP_host, self.SNMP_timeout, self.Standby, self.Fault, self)
-
-		# map the attributes to the OPC ua comm client
-		for i in self.attr_list():
-			i.set_comm_client(self.OPCua_client)
-
-		self.OPCua_client.start()
-
-	# --------
-	# Commands
-	# --------
-
-# ----------
-# Run server
-# ----------
-def main(args=None, **kwargs):
-	"""Main function of the PCC module."""
-	return run((PCC,), args=args, **kwargs)
-
-
-if __name__ == '__main__':
-	main()
-
diff --git a/devices/clients/SNMP_client.py b/devices/clients/SNMP_client.py
deleted file mode 100644
index 2e742603e4542c524ad57b41e243886504676ba5..0000000000000000000000000000000000000000
--- a/devices/clients/SNMP_client.py
+++ /dev/null
@@ -1,166 +0,0 @@
-from src.comms_client import *
-import snmp
-
-
-__all__ = ["SNMP_client"]
-
-numpy_to_snmp_dict = {
-	"<class 'numpy.bool_'>": opcua.ua.VariantType.Boolean,
-	"<class 'numpy.int8'>": opcua.ua.VariantType.SByte,
-	"<class 'numpy.uint8'>": opcua.ua.VariantType.Byte,
-	"<class 'numpy.int16'>": opcua.ua.VariantType.Int16,
-	"<class 'numpy.uint16'>": opcua.ua.VariantType.UInt16,
-	"<class 'numpy.int32'>": opcua.ua.VariantType.Int32,
-	"<class 'numpy.uint32'>": opcua.ua.VariantType.UInt32,
-	"<class 'numpy.int64'>": opcua.ua.VariantType.Int64,
-	"<class 'numpy.uint64'>": opcua.ua.VariantType.UInt64,
-	"<class 'numpy.datetime_data'>": opcua.ua.VariantType.DateTime, # is this the right type, does it even matter?
-	"<class 'numpy.float32'>": opcua.ua.VariantType.Float,
-	"<class 'numpy.float64'>": opcua.ua.VariantType.Double,
-	"<class 'numpy.double'>": opcua.ua.VariantType.Double,
-	"<class 'numpy.str_'>": opcua.ua.VariantType.String,
-	"<class 'numpy.str'>": opcua.ua.VariantType.String,
-	"str": opcua.ua.VariantType.String
-}
-
-class SNMP_client(CommClient):
-	"""
-	  messages to keep a check on the connection. On connection failure, reconnects once.
-	"""
-
-	def start(self):
-		super().start()
-
-	def __init__(self, community, host, timeout, on_func, fault_func, streams, try_interval=2):
-		"""
-		Create the SNMP and connect() to it
-		"""
-		super().__init__(on_func, fault_func, streams, try_interval)
-
-		self.community = community
-		self.host = host
-		self.manager = snmp.Manager(community, host, timeout)
-
-		# Explicitly connect
-		if not self.connect():
-			# hardware or infra is down -- needs fixing first
-			fault_func()
-			return
-
-	def connect(self):
-		"""
-		Try to connect to the client
-		"""
-
-		self.streams.debug_stream("Connecting to server %s %s", self.community, self.host)
-		self.connected = True
-		return True
-
-	def disconnect(self):
-		"""
-		disconnect from the client
-		"""
-		self.connected = False  # always force a reconnect, regardless of a successful disconnect
-
-
-	def ping(self):
-		"""
-		ping the client to make sure the connection with the client is still functional.
-		"""
-		pass
-
-	def _setup_annotation(self, annotation):
-		"""
-		This class's Implementation of the get_mapping function. returns the read and write functions
-		"""
-
-		if isinstance(annotation, dict):
-			# check if required path inarg is present
-			if annotation.get('oids') is None:
-				AssertionError("SNMP get attributes require an oid")
-			oids = annotation.get("oids")  # required
-
-			if annotation.get('host') is None:
-				AssertionError("SNMP get attributes require an host")
-			host = annotation.get("host")  # required
-
-		else:
-			TypeError("SNMP attributes require a dict with oid and adress")
-			return
-
-		return host, oids
-
-	def setup_value_conversion(self, attribute):
-		"""
-		gives the client access to the attribute_wrapper object in order to access all data it could potentially need.
-		the OPC ua read/write functions require the dimensionality and the type to be known
-		"""
-
-		dim_x = attribute.dim_x
-		dim_y = attribute.dim_y
-		snmp_type = numpy_to_snmp_dict[str(attribute.numpy_type)]	 # convert the numpy type to a corresponding UA type
-
-		return dim_x, dim_y, snmp_type
-
-	def setup_attribute(self, annotation, attribute):
-		"""
-		MANDATORY function: is used by the attribute wrapper to get read/write functions. must return the read and write functions
-		"""
-
-		# process the annotation
-		host, oids = self._setup_annotation(annotation)
-
-		# get all the necessary data to set up the read/write functions from the attribute_wrapper
-		dim_x, dim_y, snmp_type = self.setup_value_conversion(attribute)
-
-		def _read_function(self):
-			vars = self.manager.get(host, *oids)
-			#TODO convert type
-			#todo
-
-		def _write_function(self, value):
-			self.manager.set(host, oids, value)
-
-		# return the read/write functions
-		return _read_function, _write_function
-
-
-
-class snmp_get:
-	"""
-	This class provides a small wrapper for the OPC ua read/write functions in order to better organise the code
-	"""
-
-	def __init__(self, host, oid, dim_x, dim_y, snmp_type):
-		self.host = host
-		self.oid = oid
-		self.dim_y = dim_y
-		self.dim_x = dim_x
-		self.snmp_type = snmp_type
-
-	def read_function(self):
-		"""
-		Read_R function
-		"""
-		value = numpy.array(self.node.get_value())
-
-		if self.dim_y != 0:
-			value = numpy.array(numpy.split(value, indices_or_sections=self.dim_y))
-		else:
-			value = numpy.array(value)
-		return value
-
-	def write_function(self, value):
-		"""
-		write_RW function
-		"""
-		# set_data_value(opcua.ua.uatypes.Variant(value = value.tolist(), varianttype=opcua.ua.VariantType.Int32))
-
-		if self.dim_y != 0:
-			v = numpy.concatenate(value)
-			self.node.set_data_value(opcua.ua.uatypes.Variant(value=v.tolist(), varianttype=self.ua_type))
-
-		elif self.dim_x != 1:
-			self.node.set_data_value(opcua.ua.uatypes.Variant(value=value.tolist(), varianttype=self.ua_type))
-		else:
-			self.node.set_data_value(opcua.ua.uatypes.Variant(value=value, varianttype=self.ua_type))