revamp hooks to do have a signature like (dao, options, fn) and options contain anything related to the original call