use List instead of boolean array and index array, need to implment Improver method