It is a little odd to have `update` handle the set logic as well.  Why not move that to the `add` method to keep them separate?