refactored interfaces