public function suck()
  {
    if ($this->endpoint instanceof PageableTallantoMethodInterface) {
      $this->endpoint->setPageNumber(1)
        ->setPageSize($this->maxPageSize);
    } else {
      throw new \Exception(
        'Tallanto pump works only with PageableTallantoMethodInterface endpoints.'
      );
    }

    // Initialize variable for return
    $totalResult = [];

    // Sucking cycle
    do {
      $suck = false;

      // Execute API and get the result
      $this->api->execute($this->endpoint);
      $result = $this->endpoint->getResult();

      if (is_array($result)) {
        // Merge result
        $totalResult = array_merge($totalResult, $result);
        if ($this->endpoint instanceof PageableTallantoMethodInterface) {

          // Decide if sucking complete
          $suck = (count($totalResult) !=
              $this->endpoint->getTotalItemsCount()) &&
            ($this->endpoint->getTotalItemsCount() > 0);
          if ($suck) {
            $this->endpoint->setPageNumber(
              $this->endpoint->getPageNumber() + 1
            );
          }

        }
      } else {
        throw new ResponseDecodeException(
          'Expected array, got '.gettype($result)
        );
      }
    } while ($suck);

    return $totalResult;
  }