Итоги голосования для комментария:
Сергей "leorik" Кардашов Плюс, приложи сюда то, что програмер, в силу профессиональных травм, в общем случае склонен решать не ту проблему, которую надо, а более общую, для которой текущая является подпроблемой. И еще много заморочек.