Now case class matching is fully typed, and uses the type information of the case class (not the implementation); this means that case classes can be defined elsewhere (even in different libraries).