added software engineering principles