The base abstract class should generally not have to be aware of its children.

I recommend that you set ````orderValue```` here to be 0. Then override the value in each of the children.

For convenience you might want to pass order value in the constructor the way that you do for code etc.

So you can define the child classes like this:

````scala
class URLFailResult(message : String,
                   uriLevel : Int,
                    stepId : String,
                    stepCount: Int) extends ErrorResult(message, 404, uriLevel, stepId, stepCount, 60) 
````
Where 60 is the order value.