detect manual state change