Structuring Persistent Object Systems for Portability in a Distributed Environment