renamed terms: 'schema' instead of constraint, and 'context' instead of extensions; 'conform-fn' instead of conformitor