experiments with method generation rather than method_missing; probably unable to simplfy though because of unexpected inherited fields (via _inherits)