fix memoize, add Element::tag