Restructured API, again.

I'm working for the best amount of backwards compatibility, among other things.
Renamed API's.

Yes, they are named after cakes.