Initial commit.
Going to slowly starting bringing over parts from the functional prototype I've built.