use options.fn()