refactored to use a model field class, which avoids request-time IO
completely.