better dependency interface