proper extra handling

util.inspect makes extra a string. This leaves it as an object but discards if circular. Results in some information loss, but better than just not ever having extra.