#18 #19 partly solved needs more work too tired atm