too lazy to list everything i did here. but some good improvements