refactor reorganize