Initial commit. Not in working order, in the middle of debugging.