	public Object handleData(JsonElement jsonReq) {
		Gson gson = new Gson();
		JsonReqSendMessageParams jsonReqParams;
		try {
			jsonReqParams = gson.fromJson(jsonReq, JsonReqSendMessageParams.class);
		} catch (Exception e) {
			return new SendMessageResponse(RES_BAD_REQUEST);
		}
		if (jsonReqParams.message == null || jsonReqParams.userID == null) {
			return new SendMessageResponse(RES_BAD_REQUEST +
					": must specify both user ID and message body.");
		}
		Profile profile;
		try {
			UserID uid = userIDFactory.getFromBase64(jsonReqParams.userID);
			profile = socialFS.findProfile(uid);
		} catch (ProfileNotFoundException e) {
			e.printStackTrace();
			return new SendMessageResponse(RES_NOT_FOUND);
		}
		ContentMessage msg = smail.createContentMessage().setMessage(jsonReqParams.message);
		smail.send(msg, profile);
		return new SendMessageResponse();
	}

	public Object handleData(JsonElement jsonReq) {
		Gson gson = new Gson();
		JsonReqSendMessageParams jsonReqParams;
		try {
			jsonReqParams = gson.fromJson(jsonReq, JsonReqSendMessageParams.class);
		} catch (Exception e) {
			return new SendMessageResponse(RES_BAD_REQUEST);
		}
		if (jsonReqParams.message == null || jsonReqParams.userID == null) {
			return new SendMessageResponse(RES_BAD_REQUEST +
					": must specify both user ID and message body.");
		}
		Profile profile;
		try {
			UserID uid = userIDFactory.getFromBase64(jsonReqParams.userID);
			profile = socialFS.findProfile(uid);
		} catch (ProfileNotFoundException e) {
			e.printStackTrace();
			return new SendMessageResponse(RES_NOT_FOUND);
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
			return new SendMessageResponse(RES_BAD_REQUEST + ": illegal user ID.");
		}
		ContentMessage msg = smail.createContentMessage().setMessage(jsonReqParams.message);
		smail.send(msg, profile);
		return new SendMessageResponse();
	}
