First commit. Lots of cleanup needed.