all done, maybe some bugs remaining...