implemented self references