split DateCalculator into multiple classes (per interval) and use a factory to create them