ohh I like that!
@property
def pip(self):
if len(self.heads) == 1:
return self.heads[0].pip
raise ValueError
self.heads might be a horrible name, but just s//g that. same for pip.
but the general idea of providing convenience methods that work in 99% of cases while keeping the underlying structure is neat
staying accurate here: we ~decided in the other thread that the objects/front ends would be called capabilities. The methods are just methods. Changing that is still possible of course but is a separate conversation.