Refactor how fields gets built round 1