More of a curiosity, but why does install_pe need no path, yet upgrade_path need one? Shouldn't a meaningful default apply here? I'm saying it more because if you're going to change the list of params and thus declare a breaking API change, might as well consider them all at the same time (1 breaking change and all that :-).