implementation is enclosed in `#ifdef` but headers not.