The system provides a framework of functions with which an \gls{iTasks}-system
can add, change and remove devices at runtime.  Moreover, the
\gls{iTasks}-system can send \gls{mTask}-\glspl{Task} --- compiled at runtime
to bytecode by the \gls{mTask}-view --- to the device. The device runs an
interpreter which executes the \gls{Task}'s bytecode following the provided
scheduling strategy. Devices added to the system are stored and get a profile
for identification. These profiles are persistent during reboots of the
\gls{iTasks}-system to allow for easy reconnecting with old devices. The way of
interacting with \gls{mTask}-\glspl{Task} is analogous to interacting with
\gls{iTasks}-\glspl{Task}. This means that programmers can access the
\glspl{SDS} made for a device in the same way as regular \glspl{SDS} and they
can execute, combine and transform \gls{mTask}-\glspl{Task} as if they where
normal \gls{iTasks}-\glspl{Task}.

\section{Devices}
\input{arch.devices}

\section{iTasks}
\input{arch.itasks}

\section{Communication}\label{sec:communication}
\input{arch.communication}

\section{Example}\label{sec:archexamples}
\input{arch.example}
