Remove date
Add functional.hpp
Move invoke to functional.hpp