\section{Related Work} \label{sec-related} New systems such as EnFrame~\cite{arxiv13-enframe} reflect growing interest in managing uncertainty at the language level. EnFrame focuses on enabling programming with uncertain data, rather than the runtime adaptation enabled by \texttt{maybe}. Aspect oriented programming (AOP)~\cite{aop} aims to increase modularity through the separation of cross-cutting concerns. The programmer expresses cross-cutting concerns in stand alone modules, or aspects, which specify a computation to be performed as well as points in the program at which that computation should be performed. Fundamentally, the goals of AOP and the \texttt{maybe} statement differ, with AOP focusing on modularity and \texttt{maybe} focused on enabling adaptation by expressing uncertainty. \texttt{maybe} shares similarities with language-based approaches to adapting energy consumption such as Eon~\cite{sensys07-eon} and Levels~\cite{sensys07-levels}. However, these approaches still require programmers to express certainty by associating code with energy states, rather than allowing the \texttt{maybe} system to determine which energy states are appropriate. \texttt{maybe} can also enable adaptation driven by goals other than energy management. Attempts to enable more adaptive mobile systems date back to systems such as Odyssey~\cite{odyssey-sosp97}. However, a taxonomy of approaches to enabling adaptation on early mobile systems~\cite{badrinath2000conceptual} reflects the focus of early efforts on incorporating adaptation into libraries that could be used by multiple apps. As we have pointed out previously, while adaptation libraries are useful, \texttt{maybe} statements can make them more powerful by allowing programmers to express uncertainty. Recent approaches that allow mobile devices to effectively offload computation by automating client-cloud partitioning are also related to the \texttt{maybe} statement. Systems such as Tactics~\cite{tactics-mobisys03} and MAUI~\cite{maui-mobisys10} used a variety of approaches to enabling this form of adaptation but are narrowly-focused on harnessing opportunities for remote execution. At present \texttt{maybe} focuses on single-device adaptation, but we are interested in exploring the ability to use uncertainty to distribute computation between multiple devices as future work.