change calls in LightObserver, add equality checks for states and colors, only add new states to the LightOberserver's stack