How to write a new distributed application