Initial commit. Also contains the basic functionality