protocol user code longer