add cache
fix peformence problem