-%\Gls{TOP} is a novel programming paradigm that offers a solution to this problem.
-%In a \gls{TOP} language, from a single declarative specification of the work that needs to be done, ready-for-work applications are generated for all layers of the system.
-%However, the hardware requirements for traditional \gls{TOP} frameworks make it not feasable to run these generated applications on resource-constrained edge devices.
-%
-%\Glspl{DSL} can overcome this limitation because domain-specific knowledge is built into the programming language, allowing for lower hardware requirements.
-%This thesis presents \gls{MTASK}, a \gls{TOP} \gls{DSL} for edge devices that can be fully integrated with \gls{ITASK}, a \gls{TOP} \gls{DSL} for distributed multi-user workflow systems.
-%With \gls{MTASK}, all layers of an \gls{IOT} system can be programmed from a single programming language in a single programming paradigm.
-
-\section{Internet of things}\label{sec:back_iot}
+%\begin{figure}[ht]
+% \centering
+% \includegraphics[width=.4\linewidth]{esp}
+% \caption{A typical ESP32 microcontroller prototyping board.}%
+% \label{fig:esp_prototype}
+%\end{figure}
+
+Edge devices come in numerous types, differing substantially from the other devices in the system.
+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.
+Programming and maintaining \gls{IOT} systems is therefore a very complex and an error-prone process.
+
+This thesis introduces research on taming these complex \gls{IOT} systems using \gls{TOP}.
+\Gls{TOP} is an innovative tierless programming paradigm for programming multi-tier interactive systems using a single declarative specification of the work that needs to be done.
+By utilising advanced compiler technologies, much of the internals, communication, and interoperation of the multi-tier applications is automatically generated.
+The result of this compilation is a ready-for-work application.
+Unfortunately, because the abstraction level is so high, the hardware requirements are too excessive for a general purpose \gls{TOP} system to be suitable for the average edge device.
+
+This is where \glspl{DSL} are brought into play.
+\Glspl{DSL} are programming languages created with a specific domain in mind.
+Consequently, domain jargon does not have to be expressed in the language itself, but they can be built-in features.
+As a result, the hardware requirements can be drastically lower even with high levels of abstraction.
+
+Using \gls{MTASK}, a novel domain-specific \gls{TOP} \gls{DSL} fully integrated with \gls{ITASK}, all layers of the \gls{IOT} can be orchestrated from a single source.
+
+\section{Reading guide}
+The thesis is presented as a purely functional rhapsody.
+On Wikipedia, a musical rhapsody is defined as follows \citep{wikipedia_contributors_rhapsody_2022}:
+\begin{quote}\emph{%
+ A \emph{rhapsody} in music is a one-movement work that is episodic yet integrated, free-flowing in structure, featuring a range of highly contrasted moods, colour, and tonality.}
+\end{quote}
+The three episodes are barded by the introduction and conclusion (\cref{chp:introduction,chp:conclusion}).
+\Cref{prt:dsl} is a paper-based---otherwise known as cumulative---episode providing insight in advanced \gls{DSL} embedding techniques for \glspl{FP}.
+The chapters are readable independently.
+\Cref{prt:top} is a monograph showing \gls{MTASK}, a \gls{TOP} \gls{DSL} for the \gls{IOT}.
+Hence, the chapters are best read in order.
+\Cref{prt:tvt} is a journal article in which traditional tiered \gls{IOT} programming is qualitatively and quantitatively compared to tierless programming using a real-world application.
+The chapter is readable independently.
+
+The following sections provide background material on the \gls{IOT}, \glspl{DSL}, and \gls{TOP} after which a detailed overview of the contributions is presented.
+Text typeset as \texttt{teletype} represents source code.
+Standalone source code listings are used are marked by the programming language used.
+Specifically for the \gls{FP} language \gls{CLEAN}, a guide tailored to \gls{HASKELL} programmers is available in \cref{chp:clean_for_haskell_programmers}.
+
+\section{\texorpdfstring{\Glsxtrlong{IOT}}{Internet of things}}\label{sec:back_iot}