docs: function getVisualizersDescriptor() {
          //we merge the contents of the CONFIG.visualizerDescriptors by id
          var indexById = function (objectArray, id) {
                  var i,
                      index = -1;
                  for (i = 0; i < objectArray.length; i++) {
                      if (objectArray[i].id === id) {
                          index = i;
                          break;
                      }
                  }
  
                  return index;
              },
              getVisualizerDescriptor = function (path) {
                  try {
                      var descriptor = fs.readFileSync(path, 'utf-8');
                      descriptor = JSON.parse(descriptor);
                      return descriptor;
                  } catch (e) {
                      //we do not care much of the error just give back an empty array
                      logger.error(e);
                      return [];
                  }
              },
              allVisualizersDescriptor = [],
              i, j;
  
          for (i = 0; i < gmeConfig.visualization.visualizerDescriptors.length; i++) {
              var descriptor = getVisualizerDescriptor(gmeConfig.visualization.visualizerDescriptors[i]);
              if (descriptor.length) {
                  for (j = 0; j < descriptor.length; j++) {
                      var index = indexById(allVisualizersDescriptor, descriptor[j].id);
                      if (index !== -1) {
                          allVisualizersDescriptor[index] = descriptor[j];
                      } else {
                          allVisualizersDescriptor.push(descriptor[j]);
                      }
                  }
              }
          }
          return allVisualizersDescriptor.sort(function (a, b) {
              if (a.id < b.id) {
                  return -1;
              }
              if (a.id > b.id) {
                  return 1;
              }
              return 0;
          });
      }