clean up closing conditions.  previously allowed two threads to potentially delete the same object (bad, matthew.  bad, bad, matthew)