Having a bunch of default arguments is ugly, but I much prefer it to `**kwargs` if the default arguments are known and fixed. This makes it much easier to see exactly what arguments the function accepts, and you don't have issues where things like `func(mispellled=True)` silently work, because you never check for extra stuff in `kwargs`.