Early refactor
Refactored