merged LightweightMutex impl into one