move requirement checking to request.