sets dependencies on interfaces for better unit testing.
removes test class for doing weird interface inheritance
splits out integation from unit tests
extracts common dependencies between testing projects