add ifdef guard