delegate and dataSource properties should always use assign/weak