whole system design