defensive callback
defensive callback