source refactorization