ES: Big refactorings intro and examples

Separate Domain from Presentation
Extract Hierarchy