introduce wf:cache API