What are the advantages of using companion objects in Scala