[TASK] further refactoring