refactoring + add