refactored the initial interface