Program design - initial set up