Initial commit, work I've done so far.