public function blur(array $params) {
        $mode = isset($params['mode']) ? $params['mode'] : null;
        $required = array('radius', 'sigma');

        if ($mode === 'motion') {
            $required[] = 'angle';
        } else if ($mode === 'radial') {
            $required = array('angle');
        }

        $transformation = $mode ? array('mode=' . $mode) : array();

        foreach ($required as $param) {
            if (!isset($params[$param])) {
                throw new InvalidArgumentException('`' . $param . '` must be specified');
            }

            $transformation[] = $param . '=' . $params[$param];
        }

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