Some minor improvements.... TODO: split out recursion during driver selection out neatly, because the implicit way of handling it at the moment is not practical.