refactoring signature and User