added a lot of changeS