Designing distributed applications with mobile code paradigms