make body data optional and add docs