Large Merge -- Be careful with work in progress

Code changes and merge