is there any way that self.tabs is not a list? That would seem like an exception and maybe we should allow for a throw?