list implementation and some tests.