public Athena(COP_Instance cop, String plus_operation, String times_operation) throws IllegalArgumentException {
        this.cop = cop;
        this.ps = new MailMan();
        this.mfactory = new MessageFactoryArrayDouble();

        // change this for sum or prod
        // LOOK: check the code!
        if (times_operation == null){
            throw new IllegalArgumentException("Times Operation can NOT be null.");
        }
        if (times_operation.equalsIgnoreCase("sum")){
            this.otimes = new OTimes_MaxSum(mfactory);
        } else {
            throw new IllegalArgumentException("Times Operation \""+plus_operation+"\" not recognized, sorry");
        }


        // change this for max or min
        if (plus_operation == null){
            throw new IllegalArgumentException("Plus Operation can NOT be null.");
        }
        if (plus_operation.equalsIgnoreCase("max")){
            this.oplus = new OPlus_MaxSum(mfactory);
            this.latestValue_start = Double.NEGATIVE_INFINITY;
        }
        else if (plus_operation.equalsIgnoreCase("min")){
            this.oplus = new OPlus_MinSum(mfactory);
            this.latestValue_start = Double.POSITIVE_INFINITY;
        } else {
            throw new IllegalArgumentException("Plus Operation \""+plus_operation+"\" not recognized, sorry");
        }

        this.op = new MSumOperator(otimes, oplus);
    }