implement Cache part