add autocache func