What do you think of making BatchID a sealed trait:

```scala
sealed trait BatchID
case class LongBatch(id: Long) extends BatchID
case object UnitBatch extends BatchID

object BatchID {
  def apply(id: Long) = LongBatch(id)
  val unit = UnitBatch
}
```