make SummingCache a trait and provide multiple implementations that can be picked based on the monoid implementation