Disclaimer - Since I have a working solution, this question perhaps crosses the line to code review, however I\'m convinced I\'m reinventing the wheel and a