additional implementation refactoring