Fix #2. Finish implementing Range.

Covers error and edge cases and fully tested now.