cached frame generator