first version with tryLock