add an interface for timefactory