Поподробнее написал про класс Protocol