i am not a fan of this implementation. i think  the time range object is all you need. If you want to split the time range, it should just give you an array of time ranges. you don't need to have a new type of time range with multiple ranges inside of it.