refactor list alloc; improve GetUnobserved run time