add some range algorithms