Refactoring + implementation