more cleanups of DiscreteRange<> code - separate file - and use block allocation