add cache to parser