ch4 TodoMVC explained