refactored implementations
refactored implementations