vp may be NULL