Yes I fully agree that the current implementation is sub-optimal.

I have been thinking about how to change this, but decided that I wanted to get the data structures commit out of the way first. My first thought was to create a data structure for it, so something that would be iterateble and have the search metadata as attributes. I actually made it to 170 lines of extra data structures work*, before I finally decided that is was a much to complicated a solution for the problem.

So after having given it a great deal of thought, I now lean against the option of simply returning a tuple with the list of results and a dict with the metadata. The upside is that the user will then be able to do **everything** that you would normally do with a list and the downside is of course that you would have to call it like:

``python
artists, meta = soco.get_library_information(self, "artists", 1, 100)
# or, if you don't care about the meta data
artists, _ = soco.get_library_information(self, "artists", 1, 100)
# or
artists = soco.get_library_information(self, "artists", 1, 100)[0]
``

I find that **a little** clumsy, but a much simpler solution and therefore in all likelyhood much less error prone (and maybe even more "Pythonic").

One could of course also have to set an optional boolean as an argument, that would indicate whether you would also get the metadata along with the results, i.e:

``python
artists, metadata = soco.get_library_information(self, "artists", 1, 100, return_meta=True)
# and
artists = soco.get_library_information(self, "artists", 1, 100)
``

but I'm not to fond of having different forms of return values. So myself I'm mostly leaning towards the return list and dict solution form above.

What do you think about that?

* The problem is, that inheriting from list (or any other built in type) is apparently frowned upon (even though strictly speaking I'm not sure that the arguments for that really apply here) AND if you start implementing an iterable yourself, then where do you stop (__add__, __equals__, pop, insert etc.)? That can quickly grow out of hand.