Ok, how about a compromise. Maybe something like this:

```
class MultiIndexSlicer(object):
    
    def __init__(self, labels):
              self.labels = labels

     def get_indexer(self, key):
             # this basically calls your 2 functions
             # but keeps the specs internal
             # also, I think allows one to do _get_loc_level as a separate method call (when this gets refactored
```

```
indexer = MultiIndexSlicer(labels).get_indexer(key)
return self.obj.iloc[indexer]
```

(could also pas ``obj`` and ``axis`` so this MIS object would have more state...