Final version. (me thinks)