Start to abstract some types, the system controler now also return the state of the observer