range implementation