Refactor Observer/Observable