Some additional refactoring to move the interfaces

Moved the interfaces out to there own files and directory.