add writer prefered read wirte lock