"T dataSource" should really be "object dataSource".
The reason is that input parameter (the datasource) is usually not the output type (T).