why we need lock