Its customisation is obtained by exposing an interface to the shell with various parts of its functionality.