Overal refactorization