library functions provided