Is it necessary to have both isRead and isUnread? seems redundant