Step two didn't work so well, so this is actually step three. Avoids too much redundant type information.
Separates adding dependencies to overloads into its own step, as it is likely to be a major task.