A quick read through your code and I do not see a problem. So the big question...
Does it work as expected?
If so Then NoProblem...