Refactorization in progress...
Work in progress