controller state handled by rudimentary condition transitions