added many changes