class flattening
use gcc by default