Этот класс очень сложный и непонятный