I still don't see WHY you want to do this and I cannot see any advantage.

The code is fairly complex BTW!