add lock around fetch