refactoring to allow for more interfaces
refactoring to allow for more interfaces