There is a check inside this.createStep(), this is why I removed some of the checking - I was trying to reduce the cyclomatic complexity number to solve a jshint problem actually!

I admit that createStep() is now partially a validator, and partially a builder function - not perfect I know.  I attempted to comment this adquequately inline.