Is there a reason you're returning a new object instead of doing `this.x =`?