move some funciton to protect