First commit.

Need to polish stuff off, fix bugs, add new things, etc.