link and unlink back pointers