replaced closure with fn.bind, I think the tradeoff is worth it