Co-operative principles in applications design