I really hate this code, it is so stupid it makes my head hurt, and it have so much important factors in it. In particular, there is a lot of logic in here.
You might not see it as such, but a lot of this is actually quite important, default values, config parsing, decisions.
This is important. And it is all handled in a a few methods that goes on forever and hide important details in the tediousness of parameter unpacking.
This approach works if you have 5 parameters, not when you have 50.