Some Refactoring. Created new interfaces