Principles of Good Module Interfaces