Many additions and changes