shitload of changes and additions