refactoring prototype