Полная переделка кода. теперь все просто и лаконично