this is a preliminary checkin for Jack to look at the code.
It should work, but it's not very well documented. I mean,
it's not documented at all. But I bet you can figure it out.
Think of it as a challenge.
