avoid breaking aliasing rules