+ add a semaphore to avoid object being desctroyed before it should be.