private void ServiceCustomer(IStoreCustomer customer, int timeOffset)
        {
            // perform register selection and get the selected register
            var selectedRegister = customer.RegisterSelection(_registers, _customers);

            // set the start time
            if (selectedRegister.GetNbrCustomersInLine().Equals(0))
                // start time is current time if line is empty
                customer.SetStartTime(timeOffset);
            else
                // otherwise start time is the end time of the last customer in line
                customer.SetStartTime(
                    selectedRegister.GetLastCustInLine()
                                    .GetCompletionTime(selectedRegister.IsTrainingRegister()));

            // put the customer in the queue
            selectedRegister.PutCustomerInLine(customer as StoreCustomer);
        }