Later programming languages, such as CLU, ML and Scheme, extended the term to refer to syntax within a language which could be defined in terms of a language core of essential constructs; the convenient, higher-level features could be desugared and decomposed into that subset.[4] This is, in fact, the usual mathematical practice of building up from primitives.