Surely this and the headerView, searchWrapper, etc, can use a factory method for a lot of this.