refactoring impersoantion