imrpoved ChangeHead()