Just curious, why delegate this default implementation to a companion object instead of just having it directly in the trait?