restructured #ifdef