Updated imports.
Major refactor and code cleanup. Interface is much nicer now.
Provide default auth-key values.

This keeps subclasses from having to implement the methods
if they're not going to be used.