Time for a major re-write.
I will return.