 Let's consider this problem. If you have two boxes, how big does a box have to be that will hold both of them? Its width will have to be as wide as the wider box, and as long as the longer box, and as tall as the combined heights. This might not be the smallest possible box, but it's guaranteed to be large enough. Now let's implement this in Python. Here's the code for the box class, and we have two box objects, box A and box B. We'll write a definition for a function to find the container box. We'll call it findContainer, and it will take two box objects as its input. We'll call them box1 and box2. Two things to note. First, this method is not part of the class. We can tell that by its indentation, and also because it doesn't have self as a parameter. Second, these parameters will be copies of the references to the original arguments. That means we want to be careful not to change any of the states of our parameters because that would change the state of the arguments as well. Let's continue with the code. We find the maximum of the two lengths, which is the maximum of box1.length and box2.length. The maximum width is the maximum of box1.width and box2.width. The combined height is going to be box1.height plus box2.height. Now that we have the dimensions, we can create a box with those dimensions. We'll call it container, and we'll call the initializer method, and give it the arguments we want, which are max.length, max.width, and combined height, and we'll return that object. Back in our main program, we can call the function. We'll have our big box, which is going to be the result of finding a container that will hold boxA and boxB, and print its dimensions. The big box has dimensions, and let's run the program, and there's our answer. So it turns out that passing objects to a function and returning them from a function works exactly as it does with every other Python data type.