def remove(self, prefix, name):
        """
        Remove a path from the tree

        prefix is a tuple of the parts in the dirpath

        name is a string representing the name of the file itself.

        Any empty folders from the point of the file backwards to the root of
        the tree is removed.
        """
        tree = self.cache.get(prefix, empty)
        if tree is empty:
            return False

        if name not in tree.files:
            return False

        tree.files.remove(name)
        self.remove_folder(tree, list(prefix))

        return True