Closes 1, 2, 3
merging