@Override
	public byte[] handleSpecificRequest(String request) {
		String[] reqBrokenOnCommandParamSeparator = request
				.split(COMMAND_PARAM_SEPARATOR);
		logger.info("$$$$$$$$$$$$Message received at quorumServer"
				+ reqBrokenOnCommandParamSeparator);
		if (request.startsWith(CLIENT_REQUEST.READ_ITEMS.name())) {
			/**
			 * Need to return to the client the local bb which is appended with
			 * the latest article written across the read quorum
			 */
			mergeLatestArticleFromQuorum();
			// need to change this to make it consistent with sequential server
			return Utils.stringToByte(COMMAND_SUCCESS + COMMAND_PARAM_SEPARATOR
					+ this.bb.toShortString());
		} else if (request.startsWith(CLIENT_REQUEST.READ_ITEM.name())) {
			/**
			 * FORMAT: READ_ITEM-<int>
			 */
			String intStr = request
					.substring((CLIENT_REQUEST.READ_ITEM.name() + COMMAND_PARAM_SEPARATOR)
							.length());
			int articleToRead = Integer.parseInt(intStr);

			Article aRead = this.bb.getArticle(articleToRead);
			StringBuilder response = new StringBuilder();
			if (aRead == null) {
				response.append(COMMAND_FAILED);
				if (articleToRead < this.bb.getMaxId()) {
					response.append(COMMAND_PARAM_SEPARATOR).append(
							"Seems valid article but server not synced");
				} else {
					response.append(COMMAND_PARAM_SEPARATOR).append(
							"Please try later");
				}
			} else {
				response.append(COMMAND_SUCCESS);
			}

			response.append(COMMAND_PARAM_SEPARATOR).append(
					aRead != null ? aRead : "");
			return Utils.stringToByte(response.toString());
		} else if (request.startsWith(CLIENT_REQUEST.POST.name())) {
			/**
			 * FORMAT: POST-AID=<int>
			 */
			return Utils
					.stringToByte(post(request.substring((CLIENT_REQUEST.POST
							.name() + COMMAND_PARAM_SEPARATOR).length())));
		}
		// internal server request
		else if (request.startsWith(REQUEST_INTERNAL_SERVER.WRITE_ARTICLE
				.name())) {
			// write local
			return Utils
					.stringToByte(write(reqBrokenOnCommandParamSeparator[1]));
		} else if (request.startsWith(REQUEST_INTERNAL_SERVER.READ_LATEST_ITEM
				.name())) {
			return Utils.stringToByte(COMMAND_SUCCESS + COMMAND_PARAM_SEPARATOR
					+ this.bb.getMaxArticle());
		} else if (request
				.startsWith(REQUEST_INTERNAL_SERVER.READ_ITEMS_FROM_ID.name())) {
			/**
			 * FORMAT: READ_ITEMS_FROM_ID-<int>
			 */
			String articlesToReadFromStr = request
					.substring((REQUEST_INTERNAL_SERVER.READ_ITEMS_FROM_ID
							.name() + COMMAND_PARAM_SEPARATOR).length());
			int articlesToReadFrom = Integer.parseInt(articlesToReadFromStr);

			return parseBytesFromArticleListWithCommandPrefix(COMMAND_SUCCESS,
					this.bb.getArticlesFrom(articlesToReadFrom));

		}
		return Utils.stringToByte(INVALID_COMMAND);

	}