use self instead of this with bind