Scala has been always known as a language which allows special handling of null values. There is ton of articles regarding Some[T], None, Option[T] . What is most annoying code for me? Null validations, see usual example: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 class Entity { } class ServiceA { def method ( a : Entity , b : Entity , c : Entity , d : Entity ) = { Validate . notNull ( a ) Validate . notNull ( b ) Validate . notNull ( c ) Validate . notNull ( d ) } } class ServiceB ( val a : ServiceA ) { def method () = { a . method ( null , null , null , null ) } } When you start to write save code in the term of fails-as-fast-as-possible , your code, services or even domain model, will be weedy, you will find such boilerplate code at every method because you can't be sure which parameter supplied someone to you class or method. Unfortunately Scala has beautiful way how to achieve nice and