support single parameter callback