#5 refactoring