rewrite of the observer and controller. im pretty sure I had it wrong before