generate fields on the fly when retrieving them