Basic functions appear to work, although everything is *very*
inefficient, the project still needs extending and refactoring
but a complete redesign from the ground up seems to be in order.