tons of changes, super undocumented ones too :)