this doesn't compile correctly on old gfortran and ifort...