Simplified core by removing Step class