we use mutex to protect data