public function setDisplay($display)
    {
        if ($display === null) {
            $this->display = null;

            return $this;
        }

        if (!is_string($display)) {
            throw new InvalidArgumentException(sprintf(
                'Layout must be a string, received %s',
                (is_object($display) ? get_class($display) : gettype($display))
            ));
        }

        $supportedLayouts = $this->supportedDisplayLayouts();
        if (!in_array($display, $supportedLayouts)) {
            throw new OutOfBoundsException(sprintf(
                'Unsupported layout [%s]; must be one of %s',
                $display,
                implode(', ', $supportedLayouts)
            ));
        }

        $this->display = $display;

        return $this;
    }