Further fleshing of the interfaces.

Added some documentation to many things to further explain how it might
work.