#33 refactoring