As it stands, the `Message` model depends on various lev routines. I think we want to reverse this.  One of the big goals of lev is to simplify models so that they only know about their connections to other models and their internal state.  This makes them super stable (adding new features doesn't break the model) and easy to mock in tests (separates us from random AR life cycle callbacks that do who-knows-what-tasks that are unrelated to the test at hand).   

I'd suggest adding a new routine called `SaveMessage` (or similar).  This routine will call the `save!` method but will also handle any other calls that would normally be in a life cycle callback -- e.g., instead of having `before_save :deliver`, the `SaveMessage` routine would call the `SendMessage` routine.  (and dunno, maybe `SaveMessage` is really `CreateMessage` since I don't imagine a message is ever updated after creation).  

The `add_recipients` method would also go away.  `CreateMessage` would `uses_routine` `AddMessageRecipients` when building up the message.

One other nice thing about moving away from life cycle callbacks (or their kin, Observers) is that the logic for any one feature is located in just one place, and you don't have to jump from place to place to find it.  It is more explicit and co-located.

Bubbling this up, really the `create` method in the `Api::V1::MessagesController`  should use a handler, `MessagesCreate`.  That handler would `uses_routine` `CreateMessage`, etc etc.  Of course, the benefit of handlers is they are testable on their own, and then the controller ends up being a number of delegations to handlers instead of 7 unrelated blocks of code in the actions.  And with these handlers and routines better connected, we can take advantage of lev's error and transaction machinery.