why putVolatile?