: In this paper we present the language Monaco, which is a DSL for programming event-based, reactive automation solutions. The main purpose of the language is to bring automation programming closer to the domain experts and end users. Important design goals therefore have been to keep the language simple and allow writing programs which are close to the perception of domain experts. The language Monaco is similar to Statecharts in its expressive power, however, adopts an imperative notation. Moreover, Monaco adopts a state-of-the-art component approach with interfaces and polymorphic implementations and it enforces strict hierarchical communication architectures which support the hierarchical abstraction of control tasks. We discuss the main design goals, the essential programming elements, and the visual program representation and illustrate how the language supports hierarchical abstraction of control functionality by an example application.