refactoring + finitions