Let me know if this is still available, I'd upgrade it, modernise it whilst keeping the same principle at heart of the code