I am betting that the solution turns out to be absurdly simple. isn't it always the way?, weird errors - code is syntax right - oh no logical/implementation bugs .. deep breath, here we go (bang head against wall/monitor multiple times - and repeat) .. take a break, come back too it and the answer ...