change top most level self to this