save states in LightObserver as a stack