Then why did you not mention Q::S in your original node? First, reinventing the wheel is not bad ... but the fact is, you are reinventing a way to get any or all... which is exactly what Q::S does, only in a different manner. (And none is not really needed, now is it?) No one said your code stinks, you simply said you are not reinventing a wheel, but you reall are. That's ok. :)