use self references throughout