added implementations of the Observer, TODO use them