Here class definitions are functions, however there are other possibilities...
Priority has been given to space rather than speed, hence the
unorthodox method despatch, however again, there are other
possibilities...