- implemented 4 functions