private protocol