This is a combination of 6 commits