An architecture for distributed interpretation of mobile programs