rewrote lots; added print_list