all done, with comments