bind this to fn, changed old self = this coding style