implemented for mutex