The NFData instance for ModIface looks a bit dubious because it carefully chooses to force or not force certain fields, but it can easily break/change semantics when someone
adds, removes or reorders fields in ModIface
. I suggest using RecordWildcards or NamedFieldPuns to avoid this.