code is cleared of many ifdefs & ODR is used for some declarations