use Guava cache to replace HashMap