basics of system design