I think I got that sorted properly in the end with the ```reversed``` function so that calling ```remove 20..23``` actually removes in the order of 23¸ 22, 21, 20 which means that the 'still existing' indexes are not changed during one iteration.

 If you have a playlist e.g. 1 - 10 and you run ```remove 5..8``` it will delete '8, 7, 6, 5) and then move the former 9 to 5 and the former 10 to 6.