refactorization work