Refactored to implement interface