added header include for std::function