feat #18: Add a customizable cache