#6 refactoring