Further work for refactoring