[WIP] Backend interfaces

Up until now the backend interfaces have been completely undocumented.  This is an attempt to start addressing that.