added list implementation