lots of changes & additions