make members volatile as precautionary measure given that objects may be used by multiple threads and field visibility issues may cause apparent state inconsistencies