Package names refactored, observer pattern added