It seems to me that this, from load_values:
```
self.class.auto_init_fields.each do |f|
  self.send "#{f}=", params[f.to_s]
end
```

and this from assign attributes:

```
params.each do |attrib, value|
  send "#{attrib}=", value if respond_to? "#{attrib}="
end
``` 

are doing basically the same thing. Right?  load_values will set values that are defined with the 'field' declaration, which automatically provides a setter.  The assign_attributes will assign things that have setters, whether or not they were declared as a field.  Feel like we could consolidate this, using the more permissive of the two.  So, load_values could call assign_attributes instead of looping through the auto_init_fields.