new functions and updated existing