Distributed, shared and persistent objects: a model for distributed object-oriented programming