starting impl of range.  fast range implemented and sort of tested
fast range for the fast case, normal (slow) range for the complex case