Whole systems design