refactoring, add new methods