refactor SwitchEvent - use phase-time and cycle-time instead of remaining duration (t)