refactoring; v7