handling optional callback