just use bind instead of self