before exploring another way of threadlocal