Agree that its getting a little long. It's annoying that we have to continue to support save_auth in that third position. Would you prefer `opts={}` over `*opts`?

I know it changes the suggested interface for source but the of use of `*opts` feels slightly odd to me. I usually reach for *opts to collect a number of params of the same type.

In 2.0 this interface would obviously not have save_auth so it will get much nicer.