refactor + reorganization