added read mutex. more testing needed