diff --git a/lewis_emulators/dma4500m/__init__.py b/lewis_emulators/dma4500m/__init__.py
deleted file mode 100644
index ba3aaa07..00000000
--- a/lewis_emulators/dma4500m/__init__.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from .device import SimulatedDMA4500M
-from ..lewis_versions import LEWIS_LATEST
-
-framework_version = LEWIS_LATEST
-__all__ = ['SimulatedDMA4500M']
diff --git a/lewis_emulators/dma4500m/device.py b/lewis_emulators/dma4500m/device.py
deleted file mode 100644
index dd26b96d..00000000
--- a/lewis_emulators/dma4500m/device.py
+++ /dev/null
@@ -1,92 +0,0 @@
-from collections import OrderedDict
-
-from .states import ReadyState, MeasuringState, DoneState
-
-from lewis.devices import StateMachineDevice
-
-
-class SimulatedDMA4500M(StateMachineDevice):
-
-    def _initialize_data(self):
-        """
-        Initialize all of the device's attributes.
-        """
-        self.connected = True
-        self.measurement_time = 0
-
-        self.sample_id = 0
-        self.target_temperature = 0.0
-        self.actual_temperature = 0.0
-        self.density = 0.0
-        self.condition = "valid"
-
-        self.data_buffer = ""
-        self.status = ""
-
-        self.measuring = False
-        self.last_measurement_successful = False
-        self.setting_temperature = False
-
-    def reset(self):
-        self._initialize_data()
-
-    def start(self):
-        if self.measuring:
-            return "measurement already started"
-        else:
-            self.sample_id += 1
-            self.measuring = True
-            return "measurement started"
-
-    def abort(self):
-        if not self.measuring:
-            return "measurement not started"
-        else:
-            self.measuring = False
-            return "measurement aborted"
-
-    def finished(self):
-        return self.status
-
-    def set_temperature(self, temperature):
-        if self.measuring:
-            return "not allowed during measurement"
-        else:
-            self.target_temperature = temperature
-            self.setting_temperature = True
-            return "accepted"
-
-    def get_data(self):
-        if not self.data_buffer:
-            return "no new data"
-        else:
-            data = self.data_buffer
-            self.data_buffer = ""
-            return data
-
-    def get_raw_data(self):
-        sample_id = self.sample_id if self.sample_id else "NaN"
-        return "{0:.6f};{1:.2f};{2:.2f};{3}".format(self.density,
-                                                    self.actual_temperature,
-                                                    self.target_temperature,
-                                                    sample_id)
-
-    def _get_state_handlers(self):
-        return {
-            "ready": ReadyState(),
-            "measuring": MeasuringState(),
-            "done": DoneState(),
-        }
-
-    def _get_initial_state(self):
-        return "ready"
-
-    def _get_transition_handlers(self):
-        return OrderedDict([
-            (("ready", "measuring"), lambda: self.measuring is True),
-            (("measuring", "ready"), lambda: self.measuring is False and not self.last_measurement_successful),
-            (("measuring", "done"), lambda: self.measuring is False and self.last_measurement_successful),
-            (("done", "measuring"), lambda: self.measuring is True),
-            (("done", "ready"), lambda: self.setting_temperature is True),
-            (("ready", "ready"), lambda: self.setting_temperature is True),
-        ])
diff --git a/lewis_emulators/dma4500m/interfaces/__init__.py b/lewis_emulators/dma4500m/interfaces/__init__.py
deleted file mode 100644
index 2f725d9a..00000000
--- a/lewis_emulators/dma4500m/interfaces/__init__.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from .stream_interface import DMA4500MStreamInterface
-
-__all__ = ['DMA4500MStreamInterface']
diff --git a/lewis_emulators/dma4500m/interfaces/stream_interface.py b/lewis_emulators/dma4500m/interfaces/stream_interface.py
deleted file mode 100644
index 85247533..00000000
--- a/lewis_emulators/dma4500m/interfaces/stream_interface.py
+++ /dev/null
@@ -1,60 +0,0 @@
-from lewis.adapters.stream import StreamInterface
-from lewis.core.logging import has_log
-from lewis.utils.command_builder import CmdBuilder
-from lewis.utils.replies import conditional_reply
-
-if_connected = conditional_reply("connected")
-
-
-@has_log
-class DMA4500MStreamInterface(StreamInterface):
-
-    in_terminator = "\r"
-    out_terminator = "\r"
-
-    # Commands that we expect via serial during normal operation
-    def __init__(self):
-        super(DMA4500MStreamInterface, self).__init__()
-        self.commands = {
-            CmdBuilder(self.start).escape("start").eos().build(),
-            CmdBuilder(self.abort).escape("abort").eos().build(),
-            CmdBuilder(self.finished).escape("finished").eos().build(),
-            CmdBuilder(self.set_temperature).escape("set").optional(" ").escape("temperature ").arg(".+").eos().build(),
-            CmdBuilder(self.get_data).escape("get").optional(" ").escape("data").eos().build(),
-            CmdBuilder(self.get_raw_data).escape("get").optional(" ").escape("raw").optional(" ").escape("data").eos().build(),
-        }
-
-    def handle_error(self, request, error):
-        err_string = "command was: {}, error was: {}: {}\n".format(request, error.__class__.__name__, error)
-        print(err_string)
-        self.log.error(err_string)
-        return err_string
-
-    @if_connected
-    def start(self):
-        return self._device.start()
-
-    @if_connected
-    def abort(self):
-        return self._device.abort()
-
-    @if_connected
-    def finished(self):
-        return self._device.finished()
-
-    @if_connected
-    def set_temperature(self, temperature_arg):
-        try:
-            temperature = float(temperature_arg)
-        except ValueError:
-            return "the given temperature could not be parsed"
-
-        return self._device.set_temperature(temperature)
-
-    @if_connected
-    def get_data(self):
-        return self._device.get_data()
-
-    @if_connected
-    def get_raw_data(self):
-        return self._device.get_raw_data()
diff --git a/lewis_emulators/dma4500m/states.py b/lewis_emulators/dma4500m/states.py
deleted file mode 100644
index 36b73adb..00000000
--- a/lewis_emulators/dma4500m/states.py
+++ /dev/null
@@ -1,38 +0,0 @@
-from lewis.core.statemachine import State
-
-
-class ReadyState(State):
-    def on_entry(self, dt):
-        self._context.status = "measurement not started"
-        self._context.actual_temperature = self._context.target_temperature
-        self._context.setting_temperature = False
-
-
-class MeasuringState(State):
-    time_elapsed = 0.0
-
-    def on_entry(self, dt):
-        self._context.status = "measurement not finished"
-        self._context.last_measurement_successful = False
-        self.time_elapsed = 0.0
-
-    def in_state(self, dt):
-        self.time_elapsed += dt
-        if self.time_elapsed > self._context.measurement_time:
-            self._context.last_measurement_successful = True
-            self._context.measuring = False
-
-    def on_exit(self, dt):
-        if not self._context.last_measurement_successful:
-            self._context.condition = "canceled"
-            self._context.data_buffer = "data: ---;---;canceled"
-        else:
-            self._context.condition = "valid"
-            self._context.data_buffer = "data: {0:.5f};{1:.2f};{2}".format(self._context.density,
-                                                                           self._context.actual_temperature,
-                                                                           self._context.condition)
-
-
-class DoneState(State):
-    def on_entry(self, dt):
-        self._context.status = "measurement finished"