I don't like it too, but I wanted to make it easier to change its behaviour without adding lots of conditionals.
Now after a second look, I will clean it.