First commit. This code is unfinished. Should be pushing a more complete version tonight.