defining protocol