Split out the todo widget in a separate module