add some locking and dispose check