Rename TimePeriod to TimePeriodBase and implement it