com.vaadin.componentfactory.DateRange should be refactored to an interface. The existing code should be renamed to something like DateRangeActual or SimpleDateRange, etc. and implement the refactored DateRange interface. This will give a developer the opportunity to implement their own version of DateRange.