melky, вроде бы и вполне логичный и напрашивающийся, но почему-то я его не рассмотрел (не знаю почему, возможно просто затупил).
Наверно его и нужно использовать. Он нагляднее и логичнее. Хотя возможно медленней по сравнению с моим. Но разница пренебрежимо мала, это уже надо быть параноиком чтоб делать выбор в этом случае исходя из скорости