use functional.h in of v0.8.x