move defer() to Destroyable so Invalidating can use it