list should be ordered