Advanced computer languages have separated the language elements from a 'kernel' of lower level functionality. By changing the kernel, the symbol set of the language can be reused on different hardware platforms. This re-mapping of the language allows greater flexibility and power.