restoring list implementation