It is required to use a pointer referenced target when a method modifies the target.
func foo(o *Object) bar() { ... code modifying the object o ...