whole systems design