refine implementation of List object