complete canonicalreq, need to librarify it