more general sub term diff (diffs at lower levels as well)
handle empty out-goals control