Merged many changes