 		return self._innerDataSources.value[index].leafDataSourceAtIndexPath(innerPath)
 	}
 
+	/// Inserts a given inner dataSource at a given index
+	/// and emits `DataChangeInsertSections` for its sections.
 	public func insertDataSource(dataSource: DataSource, atIndex index: Int) {
 		let sections = self.sectionsOfDataSource(dataSource, atIndex: index)
 		self._innerDataSources.value.insert(dataSource, atIndex: index)

		}
	}

	public func moveDataSourceAtIndex(index oldIndex: Int, toIndex newIndex: Int) {
		let oldLocation = mapOutside(self._innerDataSources.value, oldIndex)(innerSection: 0)
		let dataSource = self._innerDataSources.value.removeAtIndex(oldIndex)

		}
	}

	/// Deletes an inner dataSource at a given index
	/// and emits `DataChangeDeleteSections` for its sections.
	public func deleteDataSourceAtIndex(index: Int) {
		let sections = self.sectionsOfDataSourceAtIndex(index)
		self._innerDataSources.value.removeAtIndex(index)
