This is very much a work in progress.  

However it does work and can be improved significantly.