When is an object pickable as RoJoHound points out is the center of most of my bugs in C2 and C3. If you use lots of functions (which most people tell you is a good programming practice) you have a tendency to shove created objects further down as you build functions that call functions and since you can't access a newly created abject except by "Pick by UID" or "last created" it can get pretty complicated.
If you start putting wait 0 here and there because well--I don't know it makes it work--you are doomed. Yes this pickable thing is a feature of the construct methodology and it messes just about everyone up from time to time.
There are a few things you can do to get around it:
1) avoid creating objects you can put in the layout since they are pickable right away.
2) keep a UID array of stuff you create and use pick by UID looping in the array. This seems like overkill but it will save you countless hours of debug time.
There are many upsides to how C3 works, and I obviously love it--but it is clear that when an object becomes pickable is a source of programming problems.
yours
winkr7