docs: def load_config(force_default=False):
      '''Find and load configuration params.
      Config files are loaded in the following order:
      - Beginning from current working dir, all the way to the root.
      - User home (~).
      - Module dir (defaults).
      '''
      def _load(cdir, recurse=False):
        confl = os.path.join(cdir, CONFIG_FNAME)
        try:
          with open(confl, 'r') as fp:
            conf = yaml.safe_load(fp)
            if type(conf) is not dict:
              raise InvalidConfiguration('Configuration at %s is not a dictionary.' % confl)
            return conf
        except EnvironmentError:
          parent = os.path.dirname(cdir)
          if recurse and parent != cdir:
            return _load(parent, recurse=True)
          else:
            return dict()
        except yaml.YAMLError:
          raise InvalidConfiguration('Configuration at %s is an invalid YAML file.' % confl)
  
      def _update(prev, next):
        for k, v in next.items():
          if isinstance(v, dict):
            prev[k] = _update(prev.get(k, {}), v)
          else:
            prev[k] = v
        return prev
  
      conf = _load(os.path.dirname(__file__))
  
      if not force_default:
        home_conf = _load(os.path.expanduser('~'))
        local_conf = _load(os.path.abspath(os.curdir), recurse=True)
  
        _update(conf, home_conf)
        _update(conf, local_conf)
      return conf