add funtional.h