cleaned up single list implementation