add almost all JavaDocs