big changes in the Cache module, with clean signatures and several
functors that implement distinct policies