public function output()
    {
        $img_back = sprintf('%s/guild_back_%s_%02d_1.png',
            $this->dataPath,
            $this->size,
            $this->icon->Background
        );

        $img_back2 = sprintf('%s/guild_back_%s_%02d_2.png',
            $this->dataPath,
            $this->size,
            $this->icon->Background
        );

        // colorize backgrounds and join them to one
        $im = imagecreatefrompng($img_back);
        $im_w = imagesx($im);
        $im_h = imagesx($im);
        $im = self::applyFilter(
            $im,
            self::IMG_COL,
            $this->icon->Color1Red,
            $this->icon->Color1Green,
            $this->icon->Color1Blue
        );

        // second background
        $tmp = imagecreatefrompng($img_back2);
        $tmp = $this->applyFilter(
            $tmp,
            self::IMG_COL,
            $this->icon->Color2Red,
            $this->icon->Color2Green,
            $this->icon->Color2Blue
        );
        // join
        imagecopy($im, $tmp, 0, 0, 0, 0, $im_w, $im_h);

        // get the symbol
        if ($this->withSymbol) {
            $img_symbol = sprintf('%s/guild_symbol_%s_%02d.png',
                $this->dataPath,
                $this->size,
                $this->icon->Symbol
            );

            $tmp = imagecreatefrompng($img_symbol);

            if ($this->icon->Inverted == 1) {
                $im = $this->applyFilter($im, self::IMG_ADD_NEG, $tmp);
            } else {
                $im = $this->applyFilter($im, self::IMG_MUL, $tmp);
            }
        }

        return $im;
    }