some minor refactoring + implementation of eventobserver+eventobservarable