@Override
	public void run() {

		Method m;
		RMIMessage message = null;
		try {
			/*
			 * Invoking the method with the provided arguments
			 */
			m = callOn.getClass().getMethod(methodName, (Class[]) argType);
			returnValue = m.invoke(callOn, args);
			message = new RMIMessage(returnValue);
		} catch (Exception e) {
			/*
			 * Upon any exception, send back a Remote440Exception
			 */
			e.printStackTrace();
			message = new RMIMessage(new Remote440Exception(
					"Insuccessful method invocation"));

		} finally {
			try {
				out.writeObject(message);
				client.close();
			} catch (IOException e) {
				/*
				 * If the connection is lost, we cannot send the message.
				 */
				e.printStackTrace();
			}

		}

	}