adds (optional) caching to parser
ensures caching is done per item when parsing a list