cycles are ok in state machines obvs