refactor range to be start/limit based