Move IFact, add some documentation