I like the idea of keeping this background library agnostic. No matter what method of backgrounding you are using, if any, then overriding a "deliver_email" method that takes in an email thing should make sense.

Something like this would work with delayed_job:

```
def deliver_email(email)
  mailer_job = MailerJob.new(email)
  Delayed::Job.enqueue(mailer_job)
end
```

Does that make sense?