Same as above, this approach seems kinda broken to me: you are dealing with data modification directly in this method, while it should really be up to a listener.