Initial commit, functional, but needs a lot of polishing.