functions: may be null strings