use self instead of this