I don't like the name `fields` but I don't have a better name... for now.