redesign Data.Interval module