shrink surface area: remove `go` method; use `state ->`