@di ммм. Вижу тут еще несколько спорных моментов. Позже отпишусь. Есть что улучшить в этом коде