Refactoring to simplify Step.cs inheritance hierarchy