allow parametric callback - for use without subclassing