dependency analysis