pulling out dependency behavior into dependency fetcher