object refactoring