Major update with all required things put in