doesn't work in older versions of GCC