make MakeCallback() more versatile