Fix #2: Design data source and delegate protocols