input range generic