lot of changes and improvements