#14 refactoring