refinement: requires.