public function smartSize($width, $height, $crop = null, $poi = null) {
        if (!$width || !$height) {
            throw new InvalidArgumentException('width and height must be specified');
        }

        $params = array(
            'width=' . (int) $width,
            'height=' . (int) $height,
        );

        if ($crop) {
            $params[] = 'crop=' . $crop;
        }

        if ($poi) {
            $params[] = 'poi=' . $poi;
        }

        return $this->addTransformation(sprintf('smartSize:%s', implode(',', $params)));
    }