globalmaphack: be more general (fmap, factoring, ...)