include(callback) {

    let db = this.db;

    // legacy support
    if (arguments.length === 2) {
      db = arguments[0];
      callback = arguments[1];
    }

    let joinNames = utilities.getFunctionParameters(callback);
    joinNames = joinNames.slice(1);

    if (!joinNames.length) {
      throw new Error('No valid relationships (1st parameter is error)');
    }

    let invalidJoinNames = joinNames.filter(r => !this.relationship(r));

    if (invalidJoinNames.length) {
      throw new Error(`Joins "${invalidJoinNames.join('", "')}" for model "${this.constructor.name}" do not exist.`);
    }

    let query = this.constructor.query().where({id: this.get('id')});

    joinNames.forEach(joinName => query = query.join(joinName));

    query.end((err, models) => {

      if (err) {
        return callback(err);
      }

      if (!models || !models.length) {
        return callback(new Error('Could not fetch parent'));
      }

      let model = models[0];
      let joins = joinNames.map(joinName => {
        let join = model.joined(joinName);
        join && this.setJoined(joinName, join);
        return join;
      });

      return callback.apply(this, [null].concat(joins));

    });

  }
Retrieve associated models joined this model from the database.
@param {function({Error} err, {Nodal.Model|Nodal.ModelArray} model_1, ... {Nodal.Model|Nodal.ModelArray} model_n)}
  Pass in a function with named parameters corresponding the relationships you'd like to retrieve.
  The first parameter is always an error callback.