         return datasource.factory
     }
     
-    let bridgedTableViewDataSource: TableViewDataSource
+    private let bridgedTableViewDataSource: BaseTableViewDataSource
 
     /// Initalizes with a Datasource instance.
     public init(_ p: DatasourceProvider) {
         provider = p
 
-        bridgedTableViewDataSource = TableViewDataSource(
+        bridgedTableViewDataSource = BaseTableViewDataSource(
             numberOfSections: { (view) -> Int in
                 p.datasource.numberOfSections },
             numberOfRowsInSection: { (view, section) -> Int in


// MARK: UITableView Support


/// A provider of a UITableViewDataSource.
public protocol UITableViewDataSourceProvider {    
    var tableViewDataSource: UITableViewDataSource { get }
}

/// An empty protocol to allow constraining a view type to UITableView.

be used as the basic for a UITableViewDataSource, without the need
to implement UITableViewDataSource on any of them.
*/
public class TableViewDataSourceProvider<TableViewDataSource: ComposableTableViewDataSource, DatasourceProvider where DatasourceProvider: DatasourceProviderType, DatasourceProvider.Datasource.FactoryType.ViewType: UITableViewType, DatasourceProvider.Datasource.FactoryType.TextType == String>: UITableViewDataSourceProvider {

    typealias TableView = DatasourceProvider.Datasource.FactoryType.ViewType

    public let provider: DatasourceProvider
    public let tableViewDataSource: TableViewDataSource

    public var datasource: DatasourceProvider.Datasource {
        return provider.datasource
