HUGE commit. TOo much stuff to mention.