cache + validation