public Object parserObject(ResponseCommand response) {

		fillHeaderProperties(response.getHeaderBuf());
		ByteBuffer bodyBuffer = response.getBodyBuf();

		try {

			if (opcode == BinaryProtocolConst.Opcodes.ADD) {
				if (reserved == BinaryProtocolConst.ResponseStatus.NO_ERROR) {
					return true;
				} else if(reserved == BinaryProtocolConst.ResponseStatus.KEY_EXISTS){
					return false;
				}
			} else if (opcode == BinaryProtocolConst.Opcodes.GET) {
				bodyBuffer.flip();
				int flag = bodyBuffer.getInt();
				byte[] value = new byte[totalBodyLength - keyLength - extrasLength];
				bodyBuffer.get(value);
				CommandData cd = new CommandData(flag, value);
				return serilizer.decode(cd);
			} else if (opcode == BinaryProtocolConst.Opcodes.VERSION) {
				bodyBuffer.flip();
				return new String(bodyBuffer.array(), DEFAULT_CHARSET_NAME);
			}

		} catch (Exception ex) {
			ex.printStackTrace();
		}

		return null;
	}