public void makeExcitatoryVBHConnections3(CABot3Net linesNet, CABot3Net gratingsNet, String lineType, String grateType){ 
    int netSize =linesNet.getInputSize();
    int column;
    int cols = linesNet.getCols();
    double weight;
    if (grateType.compareToIgnoreCase("vgrate3")==0){
      weight = 1.5;
    }
    else{
      weight =1.2;
    }
    
    int v3OnOffset = netSize*getLineOffset(lineType, "3on");
    ///int v3OffOffset = netSize*getLineOffset(lineType, "3off");
    int gratingOffset = netSize*getGrateOffset(grateType+"3");

    for(int i=0; i<netSize; i++){
      //add central connection 3X3 and 6X6
      linesNet.neurons[v3OnOffset+i].addConnection(gratingsNet.neurons[gratingOffset+i], weight);

      //if we're not "falling off" the edge, add connections -2 and +2 columns away
      column = i%cols;
      if(column > 1){
        linesNet.neurons[v3OnOffset+i-2].addConnection(gratingsNet.neurons[gratingOffset+i], weight);
      }
      if(column<cols-2){
        linesNet.neurons[v3OnOffset+i+2].addConnection(gratingsNet.neurons[gratingOffset+i], weight);
      }
      //if we're not "falling off" the edge, add connections -4 and +4 columns away
      column = i%cols;
      if(column > 3){
        linesNet.neurons[v3OnOffset+i-4].addConnection(gratingsNet.neurons[gratingOffset+i], weight);
      }

      if(column<cols-4){
        linesNet.neurons[v3OnOffset+i+4].addConnection(gratingsNet.neurons[gratingOffset+i], weight);
      }
      //if we're not "falling off" the edge, add connections -6 and +6 columns away
      if(column > 5){
        linesNet.neurons[v3OnOffset+i-5].addConnection(gratingsNet.neurons[gratingOffset+i], weight);
      }
      if(column<cols-6){
        linesNet.neurons[v3OnOffset+i+5].addConnection(gratingsNet.neurons[gratingOffset+i], weight);
      }
    }
  }