Move shared fields to superclass
Add step comments
Update for-iteration let bindings to match corrected semantics