refactorization init