traded in abstract for interfaced dependency