Instead of having both `ConsitencyLevel` and `ExpectedSuccesses`, perhaps we could combine them:

```scala
  sealed trait ConsistencyLevel {
    def expectedSuccesses[K,V](stores: Seq[Store[K,V]]): Int
  }

  object ConsistencyLevel {
    case object One extends ConsistencyLevel { override def expectedSuccesses[K,V](stores: Seq[Store[K,V]]): Int = 1 }
    case object Quorum extends ConsistencyLevel { override def expectedSuccesses[K,V](stores: Seq[Store[K,V]]): Int = stores.size / 2 + 1 }
    case object All extends ConsistencyLevel { override def expectedSuccesses[K,V](stores: Seq[Store[K,V]]): Int = stores.size }
  }
```

This way we can easily add more characteristics to the `ConsistencyLevel` instances in the future without introducing new objects.