Whole system design