Large commit, functionality towards 1, 2, and 3.