Refactored interfaces and implementations
Refactored interfaces and implementations