Refactoring and made initial interface
Interface