better code for gcc