Observer
refactoring
refactoring