better conditional compilation