Build out some additional features.

I attempted to incrementally build out some features/documentation. Some stuff doesn't completely work right, probably because I implemented it wrong. I'll try to identify all those and list them in this pull request.

This pull request probably shouldn't be merged as-is, but I created it so that we'd have a place for discussing these changes.

-Mark