needs unprotect call