parse, caching (mostly)