Big commit with many changes.