Refactored range to have multiple base classes
Preliminary support for DateRange collections.