all functions are now async