bunch of changes, functional