private void connectNounInstanceToRule(int fromInstance, double weight,
      int toStart, double dynamicWeight, CABot3Net ruleNet) {
    for (int iSet=0 ; iSet < instanceCounterSets; iSet++) {
      int fromStart = fromInstance * nInstCASize;
      // for each neuron in the body 40 excitatory neurons
      // half of the rule neurons get 4 connections (the rest 0)
      for (int neuron = 0; neuron < 40; neuron++) {
        int fromNeuron = neuron + fromStart +(iSet*3*nInstCASize) ; 
        for (int synapse = 0; synapse < 5; synapse++) {
          int toNeuron = ((synapse * 40) + neuron); // equally distribute from
          // 0-200
          toNeuron %= 100; // equally distribute 0-100
          if ((toNeuron % 10) >= 5)
            toNeuron -= 5; // just the first 5 of any 10
          toNeuron += toStart;
          neurons[fromNeuron].addConnection(ruleNet.neurons[toNeuron], weight);
        }
      }
      if (dynamicWeight != 0){
        // Connect the dynamic part
        for (int neuronPair = 0; neuronPair < 80; neuronPair++) {
          int fromNeuron = (neuronPair * 2) + nounInstanceTimeStart + fromStart +
          +(iSet*3*nInstCASize);
          int toNeuron = toStart;
          for (int synapse = 0; synapse < 25; synapse++) {
            neurons[fromNeuron].addConnection(ruleNet.neurons[toNeuron],
                dynamicWeight);
            if ((toNeuron % 10) == 4)
              toNeuron += 5;
            toNeuron++;
            neurons[fromNeuron + 1].addConnection(ruleNet.neurons[toNeuron],
                dynamicWeight);
            if ((toNeuron % 10) == 4)
              toNeuron += 5;
            toNeuron++;
          }
        }
      }
    }
  }