massive changes HUGE UPDATE