on second thought, do these really need to be part of the interface? E.g. the way I implemented it, name is not mandatory, and defaults to class name. Can this be the same with oauth, and default to `None`?