more doc, better API