incorporate bunch of changes