feature: simple cache model