more gcc-friendly