created dependency abstraction