core lib functions are lazy