stated HalfOpenIntIntervalGroup, will redo in F#