This all needs `#ifdef` too I think