draft: refactoring