Internal refactor.
Refactor.
Remove the branching code until we actually need it.
Cleanup.
Add public constructor to step.