public function cas($token, $key, $value, $expiration = 0, $flags = self::FLAG_DEFAULT, $bytes = null)
    {
        /**
         * cas <key> <flags> <exptime> <bytes> <cas unique> [noreply]\r\n
         * <value>\r\n
         */

        // Run through our serializer
        $serialized = $this->serializeValue($value);

        $value = $serialized['value'];
        $flags = $serialized['flags'];
        $bytes = $serialized['bytes'];

        // Calculate bytes if not precalculated
        $bytes = ($bytes !== null) ? $bytes : strlen($value);

        // Build packet to send ...
        $data = self::COMMAND_CAS . self::COMMAND_SEPARATOR   .
            $key                  . self::COMMAND_SEPARATOR   .
            $flags                . self::COMMAND_SEPARATOR   .
            $expiration           . self::COMMAND_SEPARATOR   .
            $bytes                . self::COMMAND_SEPARATOR   .
            $token                . self::COMMAND_TERMINATOR  .
            $value                . self::COMMAND_TERMINATOR;

        return $this->send(self::COMMAND_CAS, $data);
    }