Refactored to interfaces.