Some convenience methods and extra error information

We've been running with these changes in our fork for awhile, mostly they are some convenience methods and some extra error information which is passed back to clients.