requires -> requires_ in order to avoid std conflicts if requires wil become a keyword