I certainly like my decomposed version better because: 1) I dislike complex case/switch statements; and, 2) I like short methods. (This accords with best practice. See, for example, http://sourcemaking.com/refactoring/long-method. And "Methods can be no longer than five lines of code" is a Sandi Metz rule: http://robots.thoughtbot.com/post/50655960596/sandi-metz-rules-for-developers.) If, let's say, I'm debugging a problem with adding a bundle, I don't want to have to wade through :cancel, :remove and :add before finding what I'm looking for. These are separate cases, so they deserve separate methods.