# Tarkus 1. Point-of-perspective is Activity 1.1. Activity, as a communication subject, is generic and its data is basically *unknown* and determined by the *plugin* 1.2. Activity Plugin is an implementation detail conforming to the interface defined for communication between one or multiple nodes involving Activity 1.3. The entire system is a state machine whose next state is determined by the engine which is not intrinsic to the Activity, although Activity has next state and undo support (history) 1.4. State machine is a server-side implementation also conforming to the interfaces defined in the *plugin* architecture 2. Once the *plugin architecture* is in place, *renderers* or modules which interpret state machine can be developed. Some examples of the renderers could be: a) music notation/lessons b) simple blackboard (like in schools) c) coding -> interactive VSCode d) games (Chess Tent being one variant, others might involve for e.g. card games) e) low-level screen sharing with possible screen-takeover 3. In tandem with renderers, an interactivity layer would be needed. It could have: 1. low-level screen-takeover support (lower priority) and/or screen drawing support (suited for 2. b) scenarios) 2. state machine/activity-related interactivity (mandatory) 1. possible variant of it could be *raise hand* (ask for permission to intercept activity flow). If granted, another node takes over. 4. Recording sessions