fix tag-dispatch in functional