pretty much finished some comments and tweaking left