Updated heavily