This `raise` actually needs to be at the top of the method body. Before we do anything else, we want to raise an error if the proper conditions are not met.

I'd also add a bit of whitespace between the functional units of this method, like so:

```ruby
raise "the body of the message must not be empty" if self.body.blank?
raise ArgumentError, "both sender and recipient must be specified" unless sending && receiving

self.sender = sending
self.recipient = receiving

self.save
```

Doing so not only makes the method more readable (and therefore more maintainable), but also provides a nice starting point for any future decomposition of this method.