add doc, reformat codes