docs: function(modelJs) {
      let web = this;
      let modelName = modelJs.name;
      
      if (!modelJs.schema) {
        throw new Error(modelName + '.schema not found.');
      }
  
      let collectionName = undefined;
      if (modelJs.parentModel) {
        
        let parentModel = web.includeModel(modelJs.parentModel);
        let parentModelJs = parentModel.getModelDictionary();
        collectionName = parentModel.collection.name;
  
        modelJs.schema = extend(parentModelJs.schema, modelJs.schema);
        
        let origSchema = modelJs.initSchema;
        modelJs.initSchema = [];
        if (origSchema) {
          modelJs.initSchema.push(origSchema);
        }
  
        if (parentModelJs.initSchema) {
          modelJs.initSchema.push(parentModelJs.initSchema);
        }
  
        modelJs.options = extend(parentModel.options || {}, modelJs.options);
  
        if (console.isDebug) {
          console.debug('Model %s has a parent %s', modelName, modelJs.parentModel);
        }
  
      }
  
      let conn;
  
      let getModelConnection = function(modelJs) {
        if (modelJs.connection) {
          return modelJs.connection
        }
        
        if (modelJs.parentModel) {
          return getModelConnection(web.include(modelJs.parentModel));
        }
      }
  
      let modelConn = getModelConnection(modelJs);
      if (modelConn) {
        conn = this.connections[modelConn];
        if (web.conf.isDebug) {
          console.debug("Found model conn: ", modelJs.name, modelConn);
        }
      } else if (web.connections.mainDb) {
        conn = web.connections.mainDb; 
      } else {
      for (let i in this.connections) {
          //get the first connection
          conn = this.connections[i];
          break;
        }
      }
  
      if (!conn) {
        console.warn('No defined DB. Check your configuration.');
        return;
      }
      
      let schema = new Schema(modelJs.schema, modelJs.options);
  
      //TODO: executing schemas of children are not a good idea
      if (modelJs.initSchema) {
        if (modelJs.initSchema instanceof Array) {
          for (let i in modelJs.initSchema) {
            let mySchema = modelJs.initSchema[i];
            
            mySchema(schema);
          }
        } else {
          //console.debug('[%s] Executing normal initSchema %s', modelJs.name ,modelJs.initSchema);
          //fixed bug where schemas are execd twice
          if (!modelJs.initSchema.execd) {
            modelJs.initSchema(schema);
          }
        }
        
      }
  
      let model = conn.model(modelName, schema, collectionName);
      if (console.isDebug) {
        console.debug("Loaded model for the first time: " + modelName)
      }
  
      web.modelCache[modelName] = model;
      model.getModelDictionary = function() {
        return modelJs;
      }        
      return model;
    }