State machines are a common technique to describe state dependent systems such as communication protocols. Although such state machines typically incorporate events to switch between states, a description based on a pure event-based system is quite challenging. In this work, we describe the factors that complicate state machines on event basis and present solutions. These solutions are developed especially to allow the state machines to be used as distributed application.