In the Java World, I used to use the concept of "value objects", that is simple objects that only stores data. That's how the Thread and Draft objects should be IMO.

But here, what I suggested was really a `asThread` method returning a plain object, exactly like the one you pass as parameter to appendThread:

```javascript
Draft.prototype.asThread: function() {
  var recipients = this.recipients.length ? this.recipients : [''];
  var body = this.content.find(function(content) {
    if (typeof content === 'string') {
      return true;
    }
  });

  return {
    id: this.id,
    participants: recipients,
    body: body || '',
    timestamp: this.timestamp,
    unreadCount: 0,
    lastMessageType: this.type,
    isDraft: true
  };
}
```