public function generate($size = self::SIZE)
    {
        $this->size = $size;

        $str_base = '';

        // take 1 chars on 2
        foreach (str_split($this->seed->hash) as $k => $c) {
            if ($k % 2 == 1) {
                $str_base .= $c;
            }
        }

        $arr_base = str_split($str_base, 2);
        $arr_order = $this->getFillOrder(hexdec($arr_base[7][0]));
        $bool_rotate_way = hexdec($arr_base[7][1]) <= 8;

        $q = new Quarter(Quarter::TOP_LEFT, $bool_rotate_way);

        $color_bg = new Primitive\Color('FFFFFF');
        $color_fg = new Primitive\Color($arr_base[4].$arr_base[5].$arr_base[6]);

        $this->arr_colors[0] = $color_bg;
        $this->arr_colors[1] = $color_fg;

        foreach ($arr_order as $o) {
            list($rank1, $rank2) = str_split($arr_base[$o - 1]);

            $u = new Unit();

            $u->background($color_bg);
            $u->foreground($color_fg);
            $u->generate(hexdec($rank1), hexdec($rank2));

            $q->add($u);
        }

        // OK, first quarter is filled, so, let’s create the others!
        $this->arr_quarters[] = $q;
        $this->arr_quarters[] = $q->tr();
        $this->arr_quarters[] = $q->br();
        $this->arr_quarters[] = $q->bl();

        return $this;
    }