fixed everything, added test
fixed some, broke others