docs: def recursive_update(d, u):
      """
      Dict recursive update.
  
      Based on Alex Martelli code on stackoverflow
      http://stackoverflow.com/questions/3232943/update-value-of-a-nested-dictionary-of-varying-depth?answertab=votes#tab-top
  
      :param d: dict to update
      :param u: dict with new data
      :return:
      """
      for k, v in u.iteritems():
          if isinstance(v, collections.Mapping):
              r = recursive_update(d.get(k, {}), v)
              d[k] = r
          else:
              d[k] = u[k]
      return d