[class] use bound method object instead of a generic function