code: def connectAt(self, fromName, toName, position = None):
          
          fromLayer = self.getLayer(fromName)
          toLayer   = self.getLayer(toName)
          if self.getLayerIndex(fromLayer) >= self.getLayerIndex(toLayer):
              raise NetworkError('Layers out of order.', (fromLayer.name, toLayer.name))
          if (fromLayer.type == 'Output'):
              fromLayer.type = 'Hidden'
              fromLayer.patternReport = 0 # automatically turned off for hidden layers
              if fromLayer.kind == 'Output':
                  fromLayer.kind = 'Hidden'
          elif (fromLayer.type == 'Undefined'):
              fromLayer.type = 'Input'
              fromLayer.patternReport = 0 # automatically turned off for input layers
              if fromLayer.kind == 'Undefined':
                  fromLayer.kind = 'Input'
          if (toLayer.type == 'Input'):
              raise NetworkError('Connections out of order', (fromLayer.name, toLayer.name))
          elif (toLayer.type == 'Undefined'):
              toLayer.type = 'Output'
              toLayer.patternReport = 1 # automatically turned on for output layers
              if toLayer.kind == 'Undefined':
                  toLayer.kind = 'Output'
          if position == None:
              self.connections.append(Connection(fromLayer, toLayer))
          else:
              self.connections.insert(position, Connection(fromLayer, toLayer))
docs: Connects two layers by instantiating an instance of Connection
          class. Allows a position number, indicating the ordering of
          the connection.