big bunch of changes