return an already created object if necessary.
mode, and do not call "new" when we’re not sure "delete" can be called.