merge CS's revise, add some from mine