Seems like this should extend Widget too.  Is there some reason not to?   It's referencing destroy() which is a method in Widget.