volatile is not needed except on variables used in interrupts