 At this point, the blocks have all been added into the structure, but they haven't been wired up yet. Previously, in our old way of doing this with layers, it assumed a sequential structure and we went through and just connected one block by default to the one before. Here, we have to be more explicit. It's a little bit more work on our part, but also gives us a lot more power as to what we can build. So, as we created, as we added each of these blocks, we gave each of them a unique name, unique within this structure. That lets us refer to them now as we connect them. We start with our training data block, train. Our training block in the forward pass generates a tuple with two elements, our signal and our label. The way that this structure interprets this, with a tuple, you have two values. Each one gets passed out of a different port on the block. So, because it comes first in the tuple, our signal will get passed through the zeroth port and our label will get passed through port number one. When we're building a connection, each connection has a tail and a head. The forward pass flows from the tail to the head. So, on the connection, the number of the port that the tail connects to, in this case will be the port number of the training block. So, our I port tail means the tail of the connection is connecting to the zeroth port in the training block. So, it carries the signal. It's the first element in that tuple. Now, we want that to go to our first convolution block. The head port will be zero. That one's straightforward because our convolution block is just going to have one port on either side, zero, zero, both sides. So, that's straightforward. Now, we connect to our training block again. This time on the other port, the tail of that connection is going to connect to port one and the head is going to connect to the one hot block on its zeroth port. Again, it just has one port going in and out, so they're both going to be zero. But the port number matters on the training block. Our signal is going to come out of I port tail equals zero and our label is going to come out of I port tail equals one. That label then gets passed to the one hot block and then we can build the rest of our network. By default, if you don't specify which port, it'll assume zero for both or for either. So, now we can just connect convolution block to hyperbolic tangent, hyperbolic tangent to the next convolution, that convolution to its hyperbolic tangent activation function. Then we connect that to the flatten block, which connects in turn to the linear block and its activation function, which is the logistic block. Now, is where we join back up again. The logistic block connects to the difference block. Port zero on both sides. We didn't have to specify but we are here to be explicit. The one hot block also connects to the difference block but it connects to a different port on the difference block. We'll put it at port one. The difference block order does matter. It'll affect the sign of the result but because it's going to a mean squared loss function the result will get squared and so it actually doesn't matter for us right now so we don't worry about which port it goes into. Then we connect the difference block to the mean squared loss block and then we're done. We've made all the connections explicit between each block in our architecture. We've built our network.