always use self