add funtions