Working better with protocol