Yes, we have to decide where to go in the next steps. This is may be only an intermediate solution. But for this patch, this was the best way to get rid of the extra hash table in CO. 
My fist enthusiasms to make the control object infrastructure cristal clean is gone, because there are so much special cases in the existing code. My current strategy is the one of small re-viewable steps, because it is nearly impossible to test all ~4000 controls on each iteration. Changing the nature of CO is to hot for me yet.