Refactor to make the abstract request more complete for testing.