1) I don't understand how it works. shouldn't it be processed as a remove/add?
2) why todo?
3) why switch? an if would do it here