refactored to use interfaces for LinqConnect abstraction