grammar now uses cache, way faster