#43 finished
#44 finished
#46 done
#53 add with bad style