tidy up

made fields readonly
removed redundant code
added null checks
avoided multiple enumerations
changed local scenario variable to parameters
removed calls to virtuals from constructors
ignored obsolete method warnings in tests
fixed typo in step