'Branch nodes need to have a unique name,
which identifies them.  This method checks
to see if the branch node being made has already
been created using its name and if so it returns
that instance.'

def __new__(cls, name=None):

    if (name in cls.instances):
        return cls.instances[name]
    else:
        return Layer.__new__(cls)
