draft
refactoring