partially done for 1,2,4,5, need to fix style