Replace std::function with function pointers, add openprop namespace, add backward diff, second diff and fix some typos.