major update and merge