Initial commit, still missing polishing.