Made lots of modifications