Made the todo app a bit more complex by abstracting a couple of things