HUGE UPDATE full of changes