refactoring agai