-Typically these edge devices are small microcontrollers containing sensors and actuators to interact with the physical world.
-Microcontrollers are integrated circuits containing a microprocessor designed for use in embedded applications.
-The edge devices come in many different types and they differ substantially from the other devices in the system.
-Consequently, programming \gls{IOT} systems is very complex and error prone.
-Hence, an \gls{IOT} programmer has to program each device and their interoperation using different programming paradigms, programming languages, and abstraction levels resulting in semantic friction.
-
-This thesis introduces research on the many aspects of orchestrating \gls{IOT} systems using \gls{TOP}.
-\Gls{TOP} is a innovative tierless programming paradigm for programming multi-tier interactive systems using a single declarative specification of the work that needs to be done.
-Using advanced compiler technologies, much of the internals and communication of multi-tier applications is automatically generated and the result of compilation is a ready-for-work application.
-Unfortunately, because the abstraction level is so high, the hardware requirements are too excessive to be suitable for the average edge device.
-
-This is where \glspl{DSL} come into play.
-\Glspl{DSL} are languages created with a specific domain in mind.
-Consequently, domain knowledge does not have to be expressed in the language itself but they can be built-in features, thus drastically reducing the hardware requirements even with high levels of abstraction.
-
-\section{Reading guide}
+Edge devices are the leafs of the \gls{IOT} systems, they perform the interaction with the physical world.
+Typically, these edge devices are powered by microcontrollers.
+These miniature computers contain integrated circuits that accomodates a microprocessor designed for use in embedded applications.
+Typically, microcontrollers are therefore tiny in size; have little memory; contain a slow, but energy-efficient processor; and allow for a lot of connectivity for integrating peripherals such as sensors and actuators in order to interact with their surroundings.
+%
+%\begin{figure}[ht]
+% \centering
+% \includegraphics[width=.4\linewidth]{esp}
+% \caption{A typical ESP32 microcontroller prototyping board.}%
+% \label{fig:esp_prototype}
+%\end{figure}
+
+Unlike the conductor in the orchestra waving their baton to instruct the ensemble of instruments, in the universe of software there is room for little error.
+In the traditional setting, an \gls{IOT} engineer has to program each device and their interoperation using different programming paradigms, programming languages, and abstraction levels.
+Thus resulting in semantic friction, making programming and maintaining \gls{IOT} systems is a complex and error-prone process.
+
+This thesis describes the research carried out around orchestrating these complex \gls{IOT} systems using \gls{TOP}.
+\Gls{TOP} is an innovative tierless programming paradigm for interactive multi-layered systems.
+By utilising advanced compiler technologies, much of the internals, communications, and interoperations between the tiers\slash{}layers of the applications is automatically generated.
+From a single declarative specification of the work required, the compiler makes a ready-for-work application consisting of interconnected components for all tiers.
+For example, the \gls{TOP} system \gls{ITASK} can be used to program all layers of a multi-user distributed web applications from a single source specification.
+It is implemented in \gls{CLEAN} and executes also in \gls{CLEAN}'s run time.
+The final executable is very low level and contains all these abstraction levels, this results in increased hardware requirements.
+The high hardware requirements are no problem for regular computers but impractical for the average edge device.
+
+This is where \glspl{DSL} must be brought into play.
+\Glspl{DSL} are programming languages created with a specific domain in mind.
+Consequently, jargon does not have to be expressed in the language itself, but they can be built-in features.
+As a result, hardware requirements can be drastically lowered, even with high levels of abstraction for the specified domain.
+
+To incorporate the plethora of edge devices in the orchestra of an \gls{IOT} system, the \gls{MTASK} system is used.
+\Gls{MTASK} is a novel programming language for programming \gls{IOT} edge devices using \gls{TOP}.
+Where \gls{ITASK} abstracts away from the gritty details of multi-tier web applications, \gls{MTASK} has domain-specific abstractions for \gls{IOT} edge devices, maintaining the high abstraction level that \gls{TOP} generally offers.
+As it is integrated with \gls{ITASK}, it allows for all layers of an \gls{IOT} application to be programmed from a single source.
+
+\section{Reading guide}%
+\label{lst:reading_guide}
+This work is is structured as a purely functional rhapsody.