It still has a bit of work to do, but I'm getting there. Comments are welcome.

http://www.mwgraves.com