create factory methods
make factory methods return superclass
separate each factory method into two - one method to preserve the "interface" of the superclass, and one which will become a method implemented by each strategy
pass fields into abstract methods so that subclasses don't refer to inherited fields
put ability to set shouldRespondWith404 into superclass as it can't be defined on a strategy
extract strategy interface
convert subclasses into strategies (I have removed some tests - there are ways they could be fixed but that is left as an exercise for the interested reader)
rename