My own version of this branch.