Simple PU implementation.  Does not handle sharing and cycles properly.