wrapt has a convenient object proxy class that can be extended to correctly and transparently wrap any objects