try this with few different pairs of data structures you can look at examples you've done for previous exercises are there objects with methods where you could have used namedtuple or dict insteadattempt both and see are there dictionaries that could have been sets because you don' really access the valuesdo you have lists that check for duplicateswould set sufficeor maybe several setswould one of the queue implementations be more efficientis it useful to restrict the api to the top of stack rather than allowing random access to the listif you want some specific examples to work withtry adapting the link collector to also save the title used for each link perhaps you can generate site map in html that lists all the pages on the siteand contains list of links to other pagesnamed with the same link titles have you written any container objects recently that you could improve by inheriting built-in and overriding some of the "specialdouble-underscore methodsyou may have to do some research (using dir and helpor the python library referenceto find out which methods need overriding are you sure inheritance is the correct tool to applycould composition-based solution be more effectivetry both (if it' possiblebefore you decide try to find different situations where each method is better than the other if you were familiar with the various python data structures and their uses before you started this you may have been bored but if that is the casethere' good chance you use data structures too muchlook at some of your old code and rewrite it to use more self-made objects carefully consider the alternatives and try them all outwhich one makes for the most readable and maintainable systemalways critically evaluate your code and design decisions make habit of reviewing old code and take note if your understanding of "good designhas changed since you've written it software design has large aesthetic componentand like artists with oil on canvaswe all have to find the style that suits us best summary we've covered several built-in data structures and attempted to understand how to choose one for specific applications sometimesthe best thing we can do is create new class of objectsbut oftenone of the built-ins provides exactly what we need when it doesn'twe can always use inheritance or composition to adapt them to our use cases we can even override special methods to completely change the behavior of built-in syntaxes in the next we'll discuss how to integrate the object-oriented and not-so-objectoriented aspects of python along the waywe'll discover that it' more object-oriented than it looks at first sight