non-function requirements