private void executeReservedGridlet(int index)
    {
        boolean success = false;

        // if there are empty PEs, then assign straight away
        if (gridletInExecList_.size() + index <= super.totalPE_) {
            success = true;
        }

        // if no available PE then put unreserved Gridlets into queue list
        if (!success) {
            clearExecList(index);
        }

        // a loop to execute Gridlets and remove them from waiting list
        ResGridlet rgl = null;
        int i = 0;
        int totalAllocate = 0;

        try
        {
            while (totalAllocate < index)
            {
                rgl = (ResGridlet) gridletWaitingList_.get(i);
                success = allocatePEtoGridlet(rgl);

                // only if a Gridlet has been successfully allocated, then
                // remove it from the waiting list
                if (success)
                {
                    gridletWaitingList_.remove(i);
                    totalAllocate++;
                    continue; // don't increment i
                }
                i++;
            }
        }
        catch (Exception e) {
            // .... do nothing
        }
    }