code: function createReadStream(wofConfig, types, wofAdminRecords) {
    const wofRoot = wofConfig.datapath;
    const metaFilePaths = getMetaFilePaths(wofRoot, types);
  
    // Select correct stream between meta and SQLite based on config and do specialized stuff
    const stream = wofConfig.sqlite === true ?
      createSQLiteRecordStream(getSqliteFilePaths(wofRoot, types), wofConfig.importPlace)
        .pipe(toJSONStream.create()) :
      createMetaRecordStream(metaFilePaths, types)
        .pipe(isNotNullIslandRelated.create())
        .pipe(loadJSON.create(wofRoot, wofConfig.missingFilesAreFatal));
  
    // All the pipeline is the same for both meta and SQLite streams
    return stream
    .pipe(recordHasIdAndProperties.create())
    .pipe(isActiveRecord.create())
    .pipe(extractFields.create())
    .pipe(recordHasName.create())
    .pipe(through2.obj(function(wofRecord, enc, callback) {
      // store admin records in memory to traverse the heirarchy
      if (wofRecord.place_type !== 'venue' && wofRecord.place_type !== 'postalcode') {
        wofAdminRecords[wofRecord.id] = wofRecord;
      }
  
      callback(null, wofRecord);
    }));
  }
docs: /*
  This function creates a stream that processes files in `meta/`:
  CSV parses them, extracts the required fields, stores only admin records for
  later, and passes all records on for further processing