make datasource and delegate weak