Clean design & Refactoring