First commit, saving WIP work so far in case anyone's interested.