I explained this in other comments, but when we set `item.Completed = true`, we also want to set `item.LastCompletion = time.Now()`. Because it is really easy to do `item.Completed = true` without correspondingly setting the LastCompletion (I could see myself making that mistake), and because the logic that depends on the correctness of LastCompletion is fairly complex, I think it's important to encapsulate this, if only to protect against myself.

In short, if someone sets Complete without updating the time (something that is probably very easy to do), I could see it introducing a bug that may escape our automated tests and possibly any manual testing that you and I might do.

I feel pretty strongly that encapsulating this was the Right Thing in this situation.