find dependencies starting from a point
add circular dependency detection
extend circular dependency checks
rebuild task on top of toposort and edges