add 3 functions