it seems likely this should be volatile (?)