Refactored the interfaces