add cache feature using ets