callback can handle multiple arguments where necessary