нормальная логика, без костылей