Initial commit

Still fleshing out design / squashing bugs--it'll be in a workable state
soon.