cache functions implemented