docs: def _search(self, which, term):
          """
          The real search method.
  
          :param which: 1 for anime, 2 for manga
          :param term: What to search for
          :rtype: list
          :return: list of :class:`Pymoe.Mal.Objects.Manga` or :class:`Pymoe.Mal.Objects.Anime` objects as per the type param.
          """
          url = self.apiurl + "{}/search.xml".format('anime' if which == 1 else 'manga')
          r = requests.get(url, params={'q': term},
                           auth=HTTPBasicAuth(self._username, self._password),
                           headers=self.header)
          if r.status_code != 200:
              return []
          data = ET.fromstring(r.text)
          final_list = []
          if which == 1:
              for item in data.findall('entry'):
                  syn = item.find('synonyms').text.split(';') if item.find('synonyms').text else []
                  final_list.append(Anime(
                      item.find('id').text,
                      title=item.find('title').text,
                      synonyms=syn.append(item.find('english').text),
                      episodes=item.find('episodes').text,
                      average=item.find('score').text,
                      anime_start=item.find('start_date').text,
                      anime_end=item.find('end_date').text,
                      synopsis=html.unescape(item.find('synopsis').text.replace('<br />', '')) if item.find(
                          'synopsis').text else None,
                      image=item.find('image').text,
                      status_anime=item.find('status').text,
                      type=item.find('type').text
                  ))
              return NT_SEARCH_ANIME(
                  airing=[x for x in final_list if x.status.series == "Currently Airing"],
                  finished=[x for x in final_list if x.status.series == "Finished Airing"],
                  unaired=[x for x in final_list if x.status.series == "Not Yet Aired"],
                  dropped=[x for x in final_list if x.status.series == "Dropped"],
                  planned=[x for x in final_list if x.status.series == "Plan to Watch"]
              )
          else:
              for item in data.findall('entry'):
                  syn = item.find('synonyms').text.split(';') if item.find('synonyms').text else []
                  final_list.append(Manga(
                      item.find('id').text,
                      title=item.find('title').text,
                      synonyms=syn.append(item.find('english').text),
                      chapters=item.find('chapters').text,
                      volumes=item.find('volumes').text,
                      average=item.find('score').text,
                      manga_start=item.find('start_date').text,
                      manga_end=item.find('end_date').text,
                      synopsis=html.unescape(item.find('synopsis').text.replace('<br />', '')) if item.find(
                          'synopsis').text else None,
                      image=item.find('image').text,
                      status_manga=item.find('status').text,
                      type=item.find('type').text
                  ))
              return NT_SEARCH_MANGA(
                  publishing=[x for x in final_list if x.status.series == "Publishing"],
                  finished=[x for x in final_list if x.status.series == "Finished"],
                  unpublished=[x for x in final_list if x.status.series == "Not Yet Published"],
                  dropped=[x for x in final_list if x.status.series == "Dropped"],
                  planned=[x for x in final_list if x.status.series == "Plan to Read"]
              )