Refactor to return an opaque req