refactoring base