analytics overhaul
use exceptions instead of events
implement getControlSignals