Don't mutate self in apply method