cache generation