+Поднимал не так давно параллельную тему на решение этой же проблемы, правда чуть с другой реализацией. Конечно за обеими руками.