source: refactoring and organizing