refactoring #20