should work not tested
should work
make it look nice and return what it does with list