public CtrnnPhenotype(List<Integer> attributes, int numHiddenNeurons, int sensors, int motorType){
        Iterator<Integer> attributeIt = attributes.iterator();
        
        hiddenLayer = new ArrayList<INeuron>();
        motorLayer = new ArrayList<INeuron>();
        this.motorType = motorType;
        
        
        for(int i = 0; i < numHiddenNeurons; i++){
            double[] sensorWeights = new double[sensors];
            for (int j = 0; j < sensors; j++){
                sensorWeights[j] = convertWeight(attributeIt.next());
            }
            HiddenNeuron hidden = new HiddenNeuron(convertGain(attributeIt.next()), 
                    convertTimeConstant(attributeIt.next()), 
                    convertBias(attributeIt.next()),
                    convertWeight(attributeIt.next()),sensorWeights);
            hiddenLayer.add(hidden);
        }
        for(int i = 0; i < 2; i++){
            MotorNeuron motor = new MotorNeuron(convertGain(attributeIt.next()), 
                    convertTimeConstant(attributeIt.next()), 
                    convertBias(attributeIt.next()),
                    convertWeight(attributeIt.next()));
            motorLayer.add(motor);
        }
        //===ALL SENSOR WEIGHTS ADDED=== 10 connections from sensory input to hidden layer
        //===ALL BIASES ADDED=== 4 connections from bias node to hidden and motor layer
        //===ALL LOOPS ADDED=== (as selfweight-parameter in constructor) 4 loops
        
        for(INeuron hiddenNeuron: hiddenLayer){
            ArrayList<INeuron> otherHiddens = new ArrayList<INeuron>(hiddenLayer);
            otherHiddens.remove(hiddenNeuron);
            for(INeuron otherNeuron: otherHiddens){
                hiddenNeuron.addArc(otherNeuron, convertWeight(attributeIt.next()));
            }
        }
        
        for(int i = 0; i < 2; i++){
            for (int j = 0; j < numHiddenNeurons; j++){
                motorLayer.get(i).addArc(hiddenLayer.get(j), convertWeight(attributeIt.next()));
            }
        }
        
        motorLayer.get(0).addArc(motorLayer.get(1), convertWeight(attributeIt.next()));
        motorLayer.get(1).addArc(motorLayer.get(0), convertWeight(attributeIt.next()));
        //===ALL HIDDEN AND MOTOR CONNECTIONS ADDED=== 8 connections
        //===TOTAL CONNECTIONS: 10 + 4 + 4 + 8 = 26
        //===TOTAL PARAMETERS IN LAYER NODES: 2 * 4 = 8
        //===TOTAL ATTRIBUTES: 8 + 26 = 34
    }