Component refactoring (again)