added one pass range merger