Not instantiating a new notice for every call to `#notice` is required for it to work at all. Since `#notice` is called 3 times inside `#submit` you'd be working with three different instances each call -- no good.

The memoization isn't being done for performance, it's just one approach. An alternative would be to put `@notice = Notice.new(parameters)` somewhere inside `#submit` and have a simple `attr_reader` but that has the downsides of requiring more code, and meaning that neither `#notice` nor `#errors` would work until after a call to `#submit`.

What are your concerns?