Use SplObjectStorage