/**
  * {@inheritdoc}
  */
 protected function createStatistics($type, $dateFrom, $dateTo = null, $id)
 {
     if (empty($dateFrom)) {
         throw new \InvalidArgumentException("{$dateFrom} is invalid, a valid dateFrom must be passed");
     }
     //Check type, create objects accordingly
     switch ($type) {
         case parent::PUBLISHER:
             $obj = new Publisher();
             break;
         case parent::WEBSITE:
             $obj = new Website();
             break;
         case parent::ZONE:
             $obj = new Zone();
             break;
         default:
             throw new \InvalidArgumentException("{$type} is not a valid statistics set");
     }
     $host = $obj->getAddress($id) . "&from=" . $dateFrom;
     if (!empty($dateTo)) {
         $host = $host . "&to=" . $dateTo;
     }
     //connect to the API service
     $connection = new Connection(new ArrayConfig(array("host" => $host, "key" => self::KEY, "sharedSecret" => self::SHARED_SECRET)));
     //get the response from API connection
     $arr = $connection->getResponse();
     //API returns everything under one element, load it
     $arr = $arr[0];
     //set stats from result
     $obj->setImpressions($arr["impressions"]);
     $obj->setClicks($arr["clicks"]);
     $obj->setRevenues($arr["revenue"]);
     return $obj;
 }