conditional functional declarations