@Override
	public Object callOperationSynchronously(String operationName, Object... arguments){

		OrocosOperation operation = getOperation(operationName);
		Any[] anyArguments = castOperationArguments(operation, arguments);
		CAnyArgumentsHolder holder = new CAnyArgumentsHolder(anyArguments);

		try {

			Any result = getCService().callOperation(operationName, holder);
			if(operation.getReturnType().equals("void")){
				return null;
			}
			return AnyObjectCast.anyToObject(result);

		} catch (CNoSuchNameException e) {
			e.printStackTrace();
		} catch (CWrongNumbArgException e) {
			logger.error("The number of the arguments passed to the operation is wrong.");
			e.printStackTrace();
		} catch (CWrongTypeArgException e) {
			logger.error("At least one of the arguments passed to the operation belong to a wrong type.");
			e.printStackTrace();
		} catch (CCallInterrupted e) {
			e.printStackTrace();
		}

		return null;

	}