refactoring: classes moved to impl