add funtional