Получается тут я изобрел велосипед, зато тут (второй в посте) все же немного улучшил.