dont rely on undefined behaviour