Lots of changes and update