public function format($format = self::STANDARD)
    {
        $hexStr = strtolower($this->asHex());

        $parts = [
            substr($hexStr, 0, 8),
            substr($hexStr, 8, 4),
            substr($hexStr, 12, 4),
            substr($hexStr, 16, 4),
            substr($hexStr, 20)
        ];

        if ($format & self::UPPERCASE) {
            $parts = array_map(function ($v) {
                return strtoupper($v);
            }, $parts);
        }

        $separator = '';
        if ($format & self::HYPHENATED) {
            $separator = self::SEPERATOR_HYPHEN;
        }

        $formatted = implode($separator, $parts);

        if ($format & self::BRACES) {
            $formatted = sprintf('{%s}', $formatted);
        }

        return $formatted;
    }